2016-04-27 78 views
0

我想創建一個WCF服務,它可以返回我的XML文檔看起來像這樣:多,在相同的C#DTO相同的元素

<alert> 
    <identifier>SecretID</identifier> 
    <info> 
     <valueName>Name1</valueName> 
     <value>Info1</value> 
    </info> 
    <info> 
     <valueName>Name2</valueName> 
     <value>Info2</value> 
    </info> 
</alert> 

這個文件看起來像的DTO這樣的:

[DataContract(Name = "alert", Namespace = "")] 
public class Alert 
{ 
    [DataMember(Name = "identifier")] 
    public string identifier { get; set; } 

    [DataMember(Name = "info")] 
    public List<Info> Info { get; set; } 
} 

[DataContract(Name = "info", Namespace = "")] 
public class Info 
{ 
    [DataMember(Name = "valueName")] 
    public string ValueName { get; set; } 

    [DataMember(Name = "value")] 
    public string Value { get; set; } 
} 

然而,當我嘗試以下操作:

var alert = new Alert() 
{ 
    Identifier = "SecretID", 
    Info = new List<Info> 
    { 
     new Info() {ValueName = "Name1", Value = "Info1"}, 
     new Info() {ValueName = "Name2", Value = "Info2"}, 
    } 
} 

我得到:

<alert> 
    <identifier>SecretID</identifier> 
    <info> 
     <info xmlns=""> 
      <valueName>Name1</valueName> 
      <value>Info1</value> 
     </info> 
     <info xmlns=""> 
      <valueName>Name2</valueName> 
      <value>Info2</value> 
     </info> 
    </info> 
</alert> 

我並不需要額外的<info>標籤,並命名空間xmlns=""將是不錯的已經刪除了。我該怎麼做才能擺脫它?

回答

0

您可以使用字典或鍵值對以下提到:

[DataContract(Name = "alert", Namespace = "")] 
public class Alert 
{ 
    [DataMember(Name = "identifier")] 
    public string identifier { get; set; } 

    [DataMember(Name = "info")] 
    public KeyValuePair<string, string> Info { get; set; } 
} 

var alert = new Alert() 
{ 
    Identifier = "SecretID", 
    Info = new KeyValuePair<string, string>() 
} 
+0

這看起來promissing - 什麼如果''KeyValuePair''是一個複雜的類型(類)? –