クラス[Serializable] Currency
には 2 つのフィールドとXmlElement
リフレクション属性があります。
[XmlElement("currencyname")]
CurrencyValue m_Value { get; }
[XmlElement("exchangerate")]
public decimal exchangeRate { get; set; }
CurrencyValue
Currency
クラスの外にある列挙型です。
私は[XmlEnum("...")]
属性を使用しようとしましたが、クラス内で設定された列挙値を「プル」しようとしました。
[XmlElement("Value")]
public CurrencyValue m_value
{
get { return m_value.ToString(); }
}
しかし、役に立たない。クラス メソッドToXML()
は次のようになります。
public string ToXML(bool indent = false, bool omitXmlDeclaration = true, bool includeDefaultNamespaces = false)
{
XmlSerializer serializer = new XmlSerializer(typeof(Currency));
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
if (!includeDefaultNamespaces)
{
ns.Add("", "");
}
XmlWriterSettings settings = new XmlWriterSettings();
settings.Encoding = new UnicodeEncoding(false, false);
settings.Indent = indent;
settings.OmitXmlDeclaration = omitXmlDeclaration;
using (StringWriter stringWriter = new StringWriter())
{
using (XmlWriter xmlWriter = XmlWriter.Create(stringWriter, settings))
{
serializer.Serialize(xmlWriter, this, ns);
return stringWriter.ToString();
}
}
}
私の質問は、そのような列挙型をオブジェクトのシリアル化に含めることができますか? クラス自体に含めない理由はわかりませんが、この列挙型が他の場所で使用されている可能性があり、その場所を変更することはできません。