如何解決在共享客戶端庫中定義的抽象類以及服務器端庫中的具體實現的序列化問題。客戶端lib中的抽象類和共享庫中的具體類
Interface in shared client library :
[ServiceContract(SessionMode=SessionMode.Required)]
[ServiceKnownType(typeof(SharedClient.Shape))]
public interface IMyInterface
{
void UploadDrawing(Drawing dr);
}
Concreate Drawing class in shared client library :
[DataContract]
[KnownType(typeof(SharedClient.Shape))]
public class Drawing
{
public Shape s;
}
Abstract class in shared client library :
[DataContract]
abstract public class Shape
{
[DataMember]
public abstract string Name;
}
Concrete class implementation in separate library which references the client library :
[DataContract]
public class Cirle : ClientLibrary.Shape
{
public override string Name { get; set; }
}
我不斷收到異常消息:
而試圖序列參數 http://tempuri.org/:Drawing時出錯。 InnerException消息是'輸入 'Circle',數據協定名稱爲 'Circle:http://schemas.datacontract.org/2004/07/'不是預期的。 考慮使用DataContractResolver或將靜態添加到已知類型列表的所有類型 - 例如,使用 KnownTypeAttribute屬性或將它們添加到傳遞給DataContractSerializer的已知 類型的列表中。有關更多詳細信息,請參閱InnerException 。
請不要在您的標題中加入「WCF - 」之類的內容。在[SO]上,標籤更好地服務於相同的目的。 –