Мне интересно, есть ли способ получить XmlSerializer в C #, чтобы изменить то, что он выводит для одного свойства одного объекта.Например, если у меня есть что-то вроде:
public class MyClass
{
public string prop1{get;}
public uint prop2{get;}
public MyClass2 class2{get;}
public MyClass3 class3{get;}
}
public class MyClass2
{
public string prop3{get;}
}
public class MyClass3
{
//Lots of properties that I want to serialize as normal
}
Теперь где-то в моем коде, у меня есть что-то вроде этого:
private void SerializeStuff(List<MyClass> list, string path)
{
XmlSerializer serialize = new XmlSerializer(typeof(List<MyClass>));
TextWriter writer = new StreamWriter(path);
serialize.Serialize(writer, list);
writer.Close();
}
Я хочу, чтобы сериализация работала какнормально, но с заменой prop3
на другие вещи.Пример:
<MyClass>
<prop1>whatever</prop1>
<prop2>345</prop2>
<class2>
<somethingNotProp3>whatever</somethingNotProp3>
<somethingElseNotProp3>whatever</somethingElseNotProp3>
</class2>
<class3>
...
</class3>
</MyClass>
Есть ли способ настроить XmlSerializer, чтобы мне не приходилось писать весь XML-файл вручную, или нет способа это сделать?
Редактировать: IЯ почти уверен, что решение может быть связано с реализацией метода ISerializable
GetObjectData
;Однако я не совсем уверен, как это реализовать.Я попытался сделать MyClass2
наследованным от ISerializable
и внедрить GetObjectData
, но ничего не изменилось.prop3
все еще выводился в файле XML.