Лучше всего в вашей недавней публикации, это относится к List<object>
, да?
В этом случае я бы не использовал object
- я бы использовал общий базовый класс:
[Serializable]
public class FavoriteThing {} // this is probably a bad name...
[Serializable]
public class Dog : FavoriteThing {}
[Serializable]
public class Pencil : FavoriteThing {}
(и используйте List<FavoriteThing>
вместо List<object>
)
Обратите внимание, что не не обеспечивает [Serializable]
- никакая проверка компилятором не может этого сделать; но он действительно сохраняет его в здравом уме - т.е. не (случайно) a HttpWebRequest
Кроме того, несколько сериализаторов будут успешно работать с моделью базового класса, которая не будет работать со случайными object
с - например, DataContractSerializer
, XmlSerializer
и т. Д. Обычно я предпочитаю инкапсуляция по наследованию, но для сериализации / DTO базовый класс обычно самый простой вариант.