我想實現一個服務契約,它包含一個採用通用接口的方法,並且該通用接口本身具有一個接口參數。我飾ServiceKnownType服務接口,我都飾有定期KnownType服務實現,我也飾有定期KnownType的datacontract實現:WCF:通用接口的序列化可能嗎?
[ServiceContract(SessionMode = SessionMode.Required, CallbackContract = typeof(ICallbacks))]
[ServiceKnownType(typeof(Batch<object>))]
[ServiceKnownType(typeof(Command))]
public interface IActions
{
[OperationContract]
IResponse TakeAction(IBatch<ICommand> commands);
}
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Reentrant)]
[KnownType(typeof(Batch<object>))]
[KnownType(typeof(Command))]
internal class Actions : IActions
{
}
[DataContract]
[KnownType(typeof(Command))]
public class Batch<T> : IBatch<T>
{
}
爲了記錄在案,我有批量那裏,因爲它似乎您只能爲泛型類型表達一次知識類型 - 它似乎會發出BatchOfanyType,但我不知道如何處理此問題。
我得到的異常是「將未知的靜態類型添加到已知類型列表中 - 例如,使用KnownTypeAttribute屬性或將它們添加到傳遞給DataContractSerializer的已知類型列表中。」
有什麼明顯的我做錯了嗎?接口的通用接口是不支持的嗎?爲了記錄,我在這個項目中使用了C#2.0和.NET 3.0。
是的,當我在C#4.0中考慮協變時,我在使用的平臺中進行了編輯。哦,升級。 – bwerks 2010-07-27 13:34:24