Это может быть очевидно, но я хочу добавить к тому, что сказал Ладислав. Как он упоминает, вы можете использовать типы POCO, но у вас также есть возможность выйти за пределы и использовать IXmlSerializable, ISerializable, Serializable и другие; эти другие мощи сериализации не могут гибко использоваться с IgnoreDataMember.
См. в этом блоге для получения дополнительной информации. В нем также подробно описано, как DataContractSerializer будет определять приоритеты двух конфликтующих моделей программирования для одного типа.