XmlSerializer - Ignorar el miembro inserializable heredado

Supongamos que tiene dos clases, una hereda la otra y el niño debe ser serializado / deserializado con XmlSerializer. Sin embargo, el padre contiene un miembro que no es serializable, digamos un diccionario.

public class Parent {

    public Dictionary<string, int> dictionary;
}

La clase principal es una biblioteca utilizada para muchos otros scripts. No puede ser modificado. Ahora la clase secundaria solo contiene miembros serializables:

public class Child : Parent {

    [XmlElement]
    public int foo;

}

Cuando trato de llamar al serializador, recibo un error que dice que el diccionario no es serializable. Al intentar serializar en JSON, logré escapar por el precio de una advertencia. Acabo de crear otro miembro con el mismo nombre y tipo, y usé ScriptIgnore:

public class Child : Parent {

    public int foo;

    [ScriptIgnore]
    public Dictionary<string, int> dictionary;

}

Intenté el mismo truco de nuevo aquí (usando XmlIgnore) pero eso no funcionó muy bien, el error fue el mismo. La única forma en que logré pasar por esto es crear clases separadas que solo sirvan xml de / serialización y luego copiar los valores en el lugar apropiado.

¿Alguien sabe una mejor manera de evitar esto? ¿Puedo hacer que XmlSerializer olvide el diccionario principal de alguna manera?

Respuestas a la pregunta(2)

Su respuesta a la pregunta