XmlSerializer - Ignorando o membro não serializável herdado
Suponha que você tenha duas classes, uma herda a outra e a criança precisa ser serializada / desserializada com o XmlSerializer. No entanto, o pai contém um membro que não é serializável, digamos um dicionário.
public class Parent {
public Dictionary<string, int> dictionary;
}
A classe pai é uma biblioteca usada para muitos outros scripts. Não pode ser modificado. Agora a classe filha contém apenas membros serializáveis:
public class Child : Parent {
[XmlElement]
public int foo;
}
Ao tentar chamar o serializador, recebo um erro dizendo que o dicionário não é serializável. Ao tentar serializar em JSON, consegui fugir pelo preço de um aviso. Acabei de criar outro membro com o mesmo nome e tipo e usei o ScriptIgnore:
public class Child : Parent {
public int foo;
[ScriptIgnore]
public Dictionary<string, int> dictionary;
}
Eu tentei o mesmo truque novamente aqui (usando XmlIgnore) mas isso não funcionou muito bem, o erro foi o mesmo. A única maneira pela qual eu consegui passar por isso é criar classes separadas que só servirão xml de / serializing e então copiarão os valores de volta para o local apropriado.
Alguém sabe uma maneira melhor de contornar isso? Posso fazer o XmlSerializer esquecer o dicionário pai de alguma forma?