Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/340.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.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# 为什么DataContractSerializer生成名为“的节点”;z:任何类型的;?_C#_.net_Wcf_Datacontractserializer - Fatal编程技术网

C# 为什么DataContractSerializer生成名为“的节点”;z:任何类型的;?

C# 为什么DataContractSerializer生成名为“的节点”;z:任何类型的;?,c#,.net,wcf,datacontractserializer,C#,.net,Wcf,Datacontractserializer,在使用DataContractSerializer时,我得到了许多我并不真正想要使用的名称空间的额外属性。我在一个不同的项目中生成了一个类似的数据结构,没有任何额外的标记,因此我知道这是可能的 为什么DataContractSerializer会生成一个名为“z:anytype”的节点?如果您正在序列化对象的某个集合(数组、列表、字典等)-anytype实际上意味着任何类型都可以存在(尽管您有一个属性指定值的实际类型)。在下面的例子中,它表明 public class StackOverflow

在使用DataContractSerializer时,我得到了许多我并不真正想要使用的名称空间的额外属性。我在一个不同的项目中生成了一个类似的数据结构,没有任何额外的标记,因此我知道这是可能的


为什么DataContractSerializer会生成一个名为“z:anytype”的节点?

如果您正在序列化
对象的某个集合(数组、列表、字典等)
-anytype实际上意味着任何类型都可以存在(尽管您有一个属性指定值的实际类型)。在下面的例子中,它表明

public class StackOverflow_6780831
{
    [DataContract(Name = "Order")]
    public class Order
    {
        [DataMember(Order = 1)]
        public int Id;
        [DataMember(Order = 2)]
        public List<object> List;
    }
    public static void Test()
    {
        MemoryStream ms = new MemoryStream();
        Order order = new Order
        {
            Id = 1,
            List = new List<object>
            {
                1, "some string", DateTime.Now
            },
        };
        DataContractSerializer dcs = new DataContractSerializer(typeof(Order));
        XmlWriter w = XmlWriter.Create(ms, new XmlWriterSettings
        {
            Indent = true,
            IndentChars = "  ",
            OmitXmlDeclaration = true
        });
        dcs.WriteObject(w, order);
        w.Flush();
        Console.WriteLine(Encoding.UTF8.GetString(ms.ToArray()));
    }
}
公共类堆栈溢出\u 6780831
{
[数据合同(Name=“订单”)]
公共阶级秩序
{
[数据成员(顺序=1)]
公共int Id;
[数据成员(顺序=2)]
公开名单;
}
公共静态无效测试()
{
MemoryStream ms=新的MemoryStream();
订单=新订单
{
Id=1,
列表=新列表
{
1,“一些字符串”,日期时间。现在
},
};
DataContractSerializer dcs=新的DataContractSerializer(类型(订单));
XmlWriter w=XmlWriter.Create(ms,新的XmlWriter设置
{
缩进=真,
缩进字符=”,
OmitXmlDeclaration=true
});
dcs.WriteObject(w,订单);
w、 冲洗();
Console.WriteLine(Encoding.UTF8.GetString(ms.ToArray());
}
}

如果要序列化
对象的某个集合(数组、列表、字典等)
,则会出现这种情况-anyType实际上意味着可以存在任何类型(尽管您有一个属性指定值的实际类型)。在下面的例子中,它表明

public class StackOverflow_6780831
{
    [DataContract(Name = "Order")]
    public class Order
    {
        [DataMember(Order = 1)]
        public int Id;
        [DataMember(Order = 2)]
        public List<object> List;
    }
    public static void Test()
    {
        MemoryStream ms = new MemoryStream();
        Order order = new Order
        {
            Id = 1,
            List = new List<object>
            {
                1, "some string", DateTime.Now
            },
        };
        DataContractSerializer dcs = new DataContractSerializer(typeof(Order));
        XmlWriter w = XmlWriter.Create(ms, new XmlWriterSettings
        {
            Indent = true,
            IndentChars = "  ",
            OmitXmlDeclaration = true
        });
        dcs.WriteObject(w, order);
        w.Flush();
        Console.WriteLine(Encoding.UTF8.GetString(ms.ToArray()));
    }
}
公共类堆栈溢出\u 6780831
{
[数据合同(Name=“订单”)]
公共阶级秩序
{
[数据成员(顺序=1)]
公共int Id;
[数据成员(顺序=2)]
公开名单;
}
公共静态无效测试()
{
MemoryStream ms=新的MemoryStream();
订单=新订单
{
Id=1,
列表=新列表
{
1,“一些字符串”,日期时间。现在
},
};
DataContractSerializer dcs=新的DataContractSerializer(类型(订单));
XmlWriter w=XmlWriter.Create(ms,新的XmlWriter设置
{
缩进=真,
缩进字符=”,
OmitXmlDeclaration=true
});
dcs.WriteObject(w,订单);
w、 冲洗();
Console.WriteLine(Encoding.UTF8.GetString(ms.ToArray());
}
}

我的问题是我将接口作为类型传递给我的DataContractSerializer

很容易错过,因为我的界面名为IInvestment


如果出现此问题,请检查传递给DataContractSerializer构造函数的类型

我的问题是,我将接口作为类型传递给我的DataContractSerializer

很容易错过,因为我的界面名为IInvestment

如果出现此问题,请检查传递给DataContractSerializer构造函数的类型