2013-04-17 46 views
0

当我有这个类: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属性中,所以我不知道为什么我得到此异常。 任何人都可以告诉我为什么我得到这个异常? 谢谢!

回答