Обычно я хотел бы добавить такую функциональность в методы расширения .
РЕДАКТИРОВАТЬ : Объяснение
Я обычно предпочитаю помещать такую функциональность в методы расширения, потому что я не чувствую, что класс, который должен быть «преобразован», действительно должен знать, как выполнить преобразование. Это обеспечивает некоторую развязку. Вы можете легко изменить формат вашего XML, не изменяя объект, который вы преобразовываете в XML (особенно полезно, когда объект, который нужно преобразовать, находится в отдельной сборке).
В конечном итоге вы столкнетесь с ситуацией, когда вы захотите преобразовать свой доменный объект во что-то, о чем он на самом деле не должен знать. Например, может быть, вы хотите преобразовать объект вашего домена в Json.NET JObject
. Сборке, содержащей ваш доменный объект, не потребуется ссылка на библиотеку Json.NET , если вы использовали методы расширения для обработки преобразования в отдельной сборке.
Методы расширения хороши, особенно когда речь идет о Entity Framework. Код для классов сущностей генерируется автоматически, поэтому вы не можете просто добавить ToXML()
или ToJObject()
в класс.
Это всего лишь мои предпочтения, и я не всегда использую методы расширения для обработки такого рода функций. Это просто еще один замечательный инструмент в вашем арсенале для решения подобных проблем.