2013-12-13 24 views
1

我有一個類庫,它看起來像隔壁班的實例:序列化交付使用DataContract

[DataContract] 
class MyBaseClass 
{ 
    public string Name { get; set; } 
} 

另外,我還有一個項目,這個庫和類的裁判中,它看起來像:

[DataContract] 
class MyDeliveredClass : MyBaseClass 
{ 
    public string SecondName { get; set; } 
} 

我想知道如何序列化list<MyBaseClass>其中可能包含MyBaseClassMyDeliveredClass的對象?

可能是我應該使用[KnownType(MyDeliveredClass)] ......但我沒有參考圖書館MyDeliveredClass ...

+0

它實際上可能嗎? – user2706838

回答

1

如果你同時聲明MyBaseClass和MyDeliveredClass爲服務服務合同接口上已知類型則應該這樣的伎倆:

[ServiceContract(SessionMode = SessionMode.Required, ...)] 
[ServiceKnownType(typeof(MyBaseClass))] 
[ServiceKnownType(typeof(MyDeliveredClass))] 
public interface IMySerivceContract { 
    ... 
} 

通常你必須delclaring之間的選擇,因爲在類聲明或服務接口上ServerKnownTypes KnownTypes。然而,有時候KnownType路由並不是一種選擇,因爲各種原因 - 其中一種情況是您無法訪問類聲明的情況。如果您的合同使用接口而不是基類,即您的合同具有List<IMyBaseInterface>,則另一個您不得不使用ServiceKnownTypes的情況。

相關問題