Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.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时,与XmlArrayItem等效的是什么?_C#_Xml_Datacontractserializer - Fatal编程技术网

C# 使用DataContractSerializer时,与XmlArrayItem等效的是什么?

C# 使用DataContractSerializer时,与XmlArrayItem等效的是什么?,c#,xml,datacontractserializer,C#,Xml,Datacontractserializer,我正在使用DataContractSerializer序列化具有List类型属性的对象,并希望控制字符串的发出方式 [DataContract(Name = "ReportData", Namespace = "")] public class Foo { [DataMember] public List<string> TrackingNumbers { get; set; } } [DataContract(Name=“R

我正在使用DataContractSerializer序列化具有List类型属性的对象,并希望控制字符串的发出方式

[DataContract(Name = "ReportData", Namespace = "")]
public class Foo
{
    [DataMember]
    public List<string> TrackingNumbers { get; set; }
}
[DataContract(Name=“ReportData”,Namespace=”“)]
公开课Foo
{
[数据成员]
公共列表跟踪编号{get;set;}
}
序列化此对象时,我得到以下XML:

<ReportData xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
  <TrackingNumbers xmlns:a="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
    <a:string>14735ec8-81c4-44e4-9bbe-6c661eb74e54</a:string>
  </TrackingNumbers>
</ReportData>

14735ec8-81c4-44e4-9bbe-6c661eb74e54
我想要的是:

<ReportData xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
  <TrackingNumbers xmlns:a="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
    <TrackingNumber>14735ec8-81c4-44e4-9bbe-6c661eb74e54</TrackingNumber>
  </TrackingNumbers>
</ReportData>

14735ec8-81c4-44e4-9bbe-6c661eb74e54
这在DataContractSerializer中可能吗?XmlSerializer和XmlArrayItem很简单,但我无法理解

另外,是否可以生成不包含任何名称空间声明的XML


非常感谢。

这对我很有用。这或多或少正是@dbc所建议的:)

[CollectionDataContract(Namespace=”“,ItemName=“TrackingNumber”)]
内部类跟踪编号列表:列表
{ }
[DataContract(Name=“ReportData”,Namespace=”“)]
公开课Foo
{
[数据成员]
public TrackingNumbersList TrackingNumbers{get;set;}
}

您可以子类化
列表
并应用
[CollectionDataContract(ItemName=“TrackingNumber”,Namespace=”“)]
。看:还有。非常感谢@dbc,这就成功了
[CollectionDataContract(Namespace = "", ItemName = "TrackingNumber")]
internal class TrackingNumbersList : List<string>
{ }
    
[DataContract(Name = "ReportData", Namespace = "")]
public class Foo
{
    [DataMember]
    public TrackingNumbersList  TrackingNumbers { get; set; }
}