change ElementName

本文关键字:ElementName change | 更新日期: 2023-09-27 17:54:56

我有以下类:

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

,我想动态地改变Item的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"。事先感谢您的帮助。

change ElementName

我想动态地改变Item的ElementName

. net中的

属性并不是为此而设计的。其思想是它们是编译时元数据。如果需要更多动态元数据,则需要采用不同的方法。

在这种情况下,我建议要么手动编写XML序列化(使用LINQ to XML通常很容易),要么只是执行写入后和预读的转换。