Пытаюсь сериализировать такой класс:
[Serializable]
public class Test
{
private readonly int intValue;
public int IntValue
{
get { return this.intValue; }
}
public Test(int intValue)
{
this.intValue = intValue;
}
public Test()
{
}
}
private static string ObjectToXMLString<T>(T obj)
{
var ns = new XmlSerializerNamespaces();
ns.Add("", "");
var xws = new XmlWriterSettings
{
OmitXmlDeclaration = true,
NewLineHandling = NewLineHandling.Entitize,
Indent = false
};
var writer = new XmlSerializer(typeof(T));
var sb = new StringBuilder();
using (var sw = new StringWriter(sb))
{
using (XmlWriter xw = XmlTextWriter.Create(sw, xws))
{
writer.Serialize(xw, obj, ns);
return sb.ToString();
}
}
}
Где то в коде:
Test test = new Test(4711);
string xml_test = ObjectToXMLString(test);
Строка xml_test принимает вид: "<Test />", что в принципе логично: ни одного read-write свойства нет. Однако класс string это как то делает?
string str = "4712";
string xml_str = ObjectToXMLString(str);
строка xml_str равна "<string>4712</string>"
Хотелось бы узнать как. Интерфейс IXmlSerializable класс string вроде не поддерживает.
Куда копать уважаемые знатоки?