带序列化程序的InvalidCastException

时间:2014-03-26 12:20:15

标签: c#

这个问题会附加什么?

  

[A] SampleAzureWorker.DTO.SampleConfigScheduler无法转换为   [B] SampleAzureWorker.DTO.SampleConfigScheduler。 A型起源于   ' samplerestfull,Version = 1.0.0.0,Culture = neutral,   公钥=空'在上下文中'LoadNeither'在一个字节数组中。   类型B源自' SampleAzureWorker,Version = 1.0.0.0,   Culture = neutral,PublicKeyToken = null'在上下文中'LoadNeither'在   一个字节数组。

1 个答案:

答案 0 :(得分:0)

您是否尝试使用基本类型来回传递数据?

意思是我有一个名为

的类
[DataContract]
public class Data {}

[DataContract]
public class NetworkMessage 
{
    [DataMember]
    public Data MyData { get; set; }
}

[DataContract]
public class Foo : Data
{
    [DataMember]
    public int SomeId { get; set; }
}

[DataContract]
public class Bar : Data
{
    [DataMember]
    public string FirstName { get; set; }
}

如果您的WCF服务正在使用NetoworkMessage,则序列化将失败。您可以使用KnownType属性来解决此问题。

[DataContract]
[KnownType(typeof(Foo))]
[KnownType(typeof(Bar))]
public class Data {}

[DataContract]
public class NetworkMessage 
{
    [DataMember]
    public Data MyData { get; set; }
}

[DataContract]
public class Foo : Data
{
    [DataMember]
    public int SomeId { get; set; }
}

[DataContract]
public class Bar : Data
{
    [DataMember]
    public string FirstName { get; set; }
}