Как / почему XmlSerializer обрабатывает класс по-разному, когда он реализует IList <T>?

XmlSerializer&nbsp;звонитIList<T>.Add()&nbsp;в моем классе, и я не понимаю, почему.

У меня есть собственный класс (один из нескольких классов в иерархии), содержащий данные, которые я преобразую в и из XML, используяXmlSerializer, В предыдущей версии моего кода эти классы не реализовывали никаких интерфейсов, и сериализация XML и десериализация, казалось, работали как ожидалось.

Сейчас я работаю над другим кодом, который использует данные, содержащиеся в этом классе, и я подумал, что было бы полезно, если бы я мог получить доступ к данным черезIList<T>&nbsp;интерфейс, поэтому я изменил свой класс для реализации этого интерфейса. (Буква «T» в данном случае является еще одним из моих пользовательских классов.) Это не подразумевало добавление каких-либо новых полей в класс; Я реализовал всенеобходимые методы и свойства&nbsp;с точки зрения данных, которые уже были сохранены.

Я надеялся, что это никак не повлияет на сериализацию. Однако при десериализации данных XML в мой класс что-то теперь вызывает новыйAdd()&nbsp;метод, который я реализовал как частьIList<T>&nbsp;интерфейс (который является проблемой, потому что этот конкретный списокIsReadOnly&nbsp;так чтоAdd()&nbsp;бросаетNotSupportedException).

Это происходит даже тогда, когда узел XML для моего класса просто<myClass/>&nbsp;без каких-либо атрибутов XML или потомков;XmlSerializer&nbsp;по-видимому, все еще создает новыйmyOtherClass&nbsp;(который нигде не указан в документе XML) и пытаетсяAdd()&nbsp;это кmyClass.

У меня проблемы с поиском информации в этом, потому что большинство вопросов, связанных сXmlSerializer&nbsp;а такжеIList<T>&nbsp;похоже, вовлекают людей, пытающихся сериализовать / десериализовать переменную типаIList<T>, Это НЕ моя ситуация; У меня нет переменных типаIList<T>&nbsp;в любом месте кода. Мой класс сериализуется и десериализируется очень хорошо, если я НЕ реализуюIList<T>&nbsp;интерфейс.

Может кто-нибудь объяснить мне, почемуXmlSerializer&nbsp;звонитIList<T>.Add()&nbsp;на моем уроке и / или как его остановить?

В идеале предложения должны быть совместимы с этим кодом, который в конечном итоге будет работать внутри Unity3d (.NET 2.0).