Trong C#, tôi đang cố gắng để serialize ClassA vào XML:Serialize lớp như XmlElement
[Serializable]
public ClassA
{
[XmlElement]
public string PropertyA { get; set; } // works fine
[XmlElement]
public ClassB MyClassB { get; set; }
}
[Serializable]
public ClassB
{
private string _value;
public override string ToString()
{
return _value;
}
}
Thật không may, kết quả tuần tự là:
<PropertyA>Value</PropertyA>
<ClassB />
Thay vào đó, tôi muốn nó là:
<PropertyA>Value</PropertyA>
<ClassB>Test</ClassB>
... giả định _value == "Test"
. Làm thế nào để tôi làm điều này? Tôi có có để cung cấp tài sản công cộng trong ClassB cho _value
không? Cảm ơn!
UPDATE:
Bằng cách thực hiện các giao diện IXmlSerializable trong ClassB (shown here # 12), XML sau đây được tạo:
<PropertyA>Value</PropertyA>
<ClassB>
<Value>Test</Value>
</ClassB>
Giải pháp này là gần như chấp nhận được, nhưng nó sẽ được tốt đẹp để loại bỏ các thẻ. Bất kỳ ý tưởng?
Ahh, bạn đã cho tôi thấy vấn đề! Tôi đã sử dụng 'WriteElementString (" Value ", _value)' thay vì 'WriteString (_value)'. nhìn theo cách tôi muốn: ' Kiểm tra ' –
Pakman