当我有这个类:NetDispatcherFaultException序列化类
public class Container
{
public IEventQueue GetEventQueue(){returns a DerivedEventQueue}
}
ComVisible(true), ComDefaultInterface(typeof(IEventQueue))]
[ClassInterface(ClassInterfaceType.None)]
[Guid("XXX-XXX-XXX-XXX")]
[ProgId("XXXX")]
[DataContract]
[KnownType(typeof(DerivedEventQueue))]
public EventQueue: IEventQueue
{
public MyEvent GetEvent(){...}
}
[DataContract]
[KnownType(typeof(DerivedEventQueue))] //doesnt matter if I have this line or not, I got the same error
//[System.Serializable]
public class DerivedEventQueue: EventQueue, IEventSink
{
...
}
当我打电话GetEventQueue我有以下异常:
System.ServiceModel.Dispatcher.NetDispatcherFaultException:格式化抛出一个异常,而试图反序列化消息:尝试反序列化参数XXXX时发生错误:GetEventQueueResult。 InnerException消息是'元素'XXXX:GetEventQueueResult'包含'XXX:DerivedEventQueue'数据合约的数据。反序列化器不知道映射到此合约的任何类型。将与'DerivedEventQueue'相对应的类型添加到已知类型列表中 - 例如,使用KnownTypeAttribute属性或将其添加到传递给DataContractSerializer的已知类型列表中。有关更多详细信息,请参阅InnerException。 ---> System.Runtime.Serialization.SerializationException:元素'XXXX:GetEventQueueResult'包含'XXXX:DerivedEventQueue'数据契约的数据。反序列化器不知道映射到此合约的任何类型。将与“DerivedEventQueue”对应的类型添加到已知类型列表中 - 例如,使用KnownTypeAttribute属性或将其添加到传递给DataContractSerializer的已知类型列表中。
DerivedEventQueue位于基类的KnownType属性中,所以我不知道为什么我得到此异常。 任何人都可以告诉我为什么我得到这个异常? 谢谢!