对于当前项目,我正在尝试XML
使用XmlSerializer
该类创建一个通用创建者-我需要其中一个类中的某个元素来ElementName
根据创建者在此上下文中所处的类的类型来设置集合,这很简单。这是一个例子:
public abstract class ElementTypeBase
{
public abstract string ElementName { get; }
}
public class ElementTypeA : ElementTypeBase
{
public override string ElementName
{
get { return "ElementA"; }
}
}
然后将其传递给我的XML
对象类,该类将用于XmlSerializer
但我希望ElementName
特定于类型。
public class XMLObject<T> where T : ElementTypeBase
{
[XmlElement(Activator.CreateInstance<T>().ElementName)]
public string SomeElement;
}
我以为我能做到这一点,但得到:
属性参数必须是属性参数类型的常量表达式、typeof 表达式或数组创建表达式
所以我认为我可以override ToString()
,但这不起作用,我正在考虑使用常量,但感觉很脏。还有其他建议吗?