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?

questionAnswers(2)

yourAnswerToTheQuestion