XmlSerializer - игнорирование унаследованного несериализуемого члена

Предположим, у вас есть два класса, один наследует другой, а потомок должен быть сериализован / десериализован с помощью XmlSerializer. Однако родительский элемент содержит элемент, который нельзя сериализовать, например, словарь.

public class Parent {

    public Dictionary<string, int> dictionary;
}

Родительский класс - это библиотека, используемая для многих других скриптов. Это не может быть изменено. Теперь дочерний класс содержит только сериализуемые члены:

public class Child : Parent {

    [XmlElement]
    public int foo;

}

При попытке вызвать сериализатор я получаю сообщение о том, что словарь не сериализуем. При попытке сериализации в JSON мне удалось уйти ценой предупреждения. Я только что создал другого члена с тем же именем и типом и использовал ScriptIgnore:

public class Child : Parent {

    public int foo;

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

}

Я снова попробовал тот же трюк (используя XmlIgnore), но это не сработало, ошибка была та же. Единственный способ, которым мне удалось пройти через это, - создать отдельные классы, которые будут обслуживать только де-сериализацию XML, а затем скопировать значения обратно в соответствующее место.

Кто-нибудь знает лучший способ обойти это? Могу ли я заставить XmlSerializer забыть о родительском словаре каким-либо образом?

Ответы на вопрос(2)

Ваш ответ на вопрос