2014-03-30 38 views
1

我有下面的類:C# - 更改的ElementName

[Serializable] 
public class UniversalRequest 
{ 
    [XmlElement(ElementName ="TEMP")] 
    public string Item { get; set; } 
} 

,我想動態改變項目的的ElementName。

我嘗試以下,但沒有成功:

foreach (PropertyInfo property in GetType().GetProperties()) 
{ 
    if (property.Name.Equals("Item")) 
    { 
     var attr = from a in (property.GetCustomAttributes(true)) 
        where (a.GetType() == typeof(XmlElementAttribute)) 
        select a; 

     var xmlElementAttribute = (XmlElementAttribute)attr.SingleOrDefault(); 
     if (xmlElementAttribute != null) 
      xmlElementAttribute.ElementName = "NEWITEMNAME"; 


    } 
} 

似乎像的ElementName被設置爲新值,但回是對下一次迭代「TEMP」。 提前感謝您的任何幫助。

回答

2

我想改變項目動態在.NET

屬性確實沒有設計爲的的ElementName。這個想法是,他們編譯時元數據是。如果你想要更多的動態元數據,你需要採取不同的方法。

在這種情況下,我建議手動編寫XML序列化(LINQ to XML通常很容易),或者只是在寫入後進行轉換和預讀。