我有这个课程:
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 消息是 'Element 'XXXX:GetEventQueueResult' 包含 'XXX:DerivedEventQueue' 数据协定的数据。反序列化器不知道映射到该合约的任何类型。将与“DerivedEventQueue”对应的类型添加到已知类型列表中 - 例如,通过使用 KnownTypeAttribute 属性或将其添加到传递给 DataContractSerializer 的已知类型列表中。有关更多详细信息,请参阅 InnerException。---> System.Runtime.Serialization.SerializationException:元素'XXXX:GetEventQueueResult'包含'XXXX:的数据:DerivedEventQueue 的数据合约。反序列化器不知道映射到该合约的任何类型。将与“DerivedEventQueue”对应的类型添加到已知类型列表中 - 例如,通过使用 KnownTypeAttribute 属性或将其添加到传递给 DataContractSerializer 的已知类型列表中。
DerivedEventQueue 在基类的 KnownType 属性中,所以我不知道为什么会出现这个异常。谁能告诉我为什么我会得到这个例外?谢谢!