Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 向Mono移植问题:由于反序列化过程中的命名空间问题,无法转换参数_C#_Wcf_Ubuntu_Mono_Deserialization - Fatal编程技术网

C# 向Mono移植问题:由于反序列化过程中的命名空间问题,无法转换参数

C# 向Mono移植问题:由于反序列化过程中的命名空间问题,无法转换参数,c#,wcf,ubuntu,mono,deserialization,C#,Wcf,Ubuntu,Mono,Deserialization,在Windows上,使用.NET。序列化或反序列化以下WCF web对象没有问题: [DataContract] public class Payload { public Payload() {} public class SubPayloadOne { public String Name { get; set; } public int Count { get; set; } } public class SubP

在Windows上,使用.NET。序列化或反序列化以下WCF web对象没有问题:

[DataContract]
public class Payload
{
    public Payload() {}

    public class SubPayloadOne
    {
        public String Name { get; set; }
        public int Count { get; set; }
    }

    public class SubPayloadTwo
    {
        public String Name { get; set; }
        public int Number { get; set; }
    }

    [DataMember]
    public SubPayloadOne P1 { get; set; }
    [DataMember]
    public SubPayloadTwo P2 { get; set; }
}
在Mono上(在Ubuntu上),尝试反序列化上述示例中的web对象将导致以下错误:System.InvalidOperationException:未能为属性字符串[Payload+SubPayloadOne+Name]String-->System.ArgumentException:无法转换参数

我的理论是Mono在反序列化对象时没有包含完整的名称空间。换句话说,它混淆了Payload.SubPayloadOne.Name的PayLoad .PayPayLoToWo.No.2,因为如果不考虑它们的完整命名空间,两个对象都是“名称”。 按照上述理论,我尝试通过将Payload.SubPayloadOne.Name或Payload.SubPayloadTwo.Name重命名为其他名称来解决此问题,例如Payload.SubPayloadTwo.NameTwo。这确实有效。然而,这将破坏与现有产品的反向兼容性(因为现有有效负载对象已经在数据库中)

如果可能的话,我正在寻找一种不涉及更改web对象的解决方案。有什么想法吗


谢谢

在我看来像是一个Mono bug,我来看看。你不需要字段上的DataMember属性吗?谢谢Pete。我忘记了示例中的那些,尽管它们确实存在于实际实现中。但不会影响bug:)我更新了示例。