我有一個WCF服務,我與共享程序集中的客戶端共享類型。 如果客戶端創建派生類,是否可以將派生類型傳遞迴服務,以便我可以通過反射讀取添加的屬性?WCF與客戶端上的共享對象和派生類
我試過了,但有KnownTypes的問題,因爲服務不知道如何反序列化派生類型。
[Serializable]
public abstract class Car : ICar
{........
//在客戶端上:
[Serializable]
public class MyCar : Car
{......
傳遞myCar到服務,我得到的異常抱怨knownType,但我不能添加此服務器上,因爲我不知道客戶會什麼時候通過發送,我想通過反射處理額外的屬性。
可能在運行時將客戶端類型註冊爲知識類型?
這可能是解決方案嗎? http://blogs.msdn.com/b/sowmy/archive/2006/03/26/561188.aspx
基本上,我需要在客戶端上搜索能夠通過添加屬性(用於UI)來擴展基類。然後該服務將反映該類並獲取這些額外的屬性並將其保存到數據庫中。當客戶端調用GetCar(id)時,服務會將這些屬性添加到基類併發回。 有沒有辦法將客戶端派生類型傳遞(註冊)到服務中,以便服務可以註冊它並將其用於此目的(使用Dictionary
DeWet
2010-08-13 08:39:13
,字符串>這些額外的屬性?實際上有一種方法可以從客戶端獲得額外的屬性 - 您的數據協定必須實現IExtensibleDataObject。這個接口應該用於不同的場景,但如果你想使用反射,你可能會達到你的要求。檢查:http://geekswithblogs.net/EltonStoneman/archive/2009/04/03/accessing-extended-data-from-iextensibledataobject.aspx – 2010-08-13 09:09:20
Dictionary是我最初的方法,但將對象鏈接到用於編輯的屬性網格無法正常工作,因爲您的bas類屬性coorectly displayd,然後必須添加用戶問題的字典屬性的自定義編輯器爲什麼這些單獨。 經過一番調查後,您會看到您的鏈接並重播。 謝謝 –
DeWet
2010-08-13 09:49:29