Существуют ли какие-либо платформы или утилиты (в пространстве .NET) для автоматической генерации объектов передачи данных из бизнес-объектов - PullRequest
1 голос
/ 10 марта 2010

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

Я понимаю, что это может быть невозможным или даже нежелательным во многих случаях, когда данные не похожи на бизнес-объекты (например, при сведении нескольких бизнес-объектов в один объект передачи данных).

Однако в моем случае большой процент моих объектов передачи данных очень похож на их бизнес-объекты (особенно для DTO для обновления данных).

Мне было интересно, существуют ли какие-либо существующие инструменты генерации кода (я ищу конкретные решения с существующими шаблонами, а не просто инструмент генерации кода общего назначения, такой как CodeSmith) или инструменты создания динамических сборок (например, используя Reflection Emit под охватывает)? Или, если вы сделали это раньше, мне было бы интересно узнать, какую технику вы использовали, чтобы помочь мне выбрать между различными вариантами.

Ответы [ 3 ]

4 голосов
/ 10 марта 2010

AutoMapper может оказаться весьма полезным: http://www.codeplex.com/AutoMapper

Изменить, в ответ на комментарий ОП:

Шаблоны T4 включены в Visual Studio для генерации кода. Вот пост о генерации кода от сущности к DTO с T4:

http://weblogs.asp.net/cibrax/archive/2009/03/11/code-generation-with-t4-an-entities-to-dto-example.aspx

0 голосов
/ 18 марта 2011

Я бы также рекомендовал Шаблоны T4 . Вы можете использовать отражение для подачи метаданных, и фактический шаблон выглядит как разметка asp. Это встроено в VS.

0 голосов
/ 10 марта 2010

Ну, в некоторой степени .NET Framework может делать это с анонимными классами.

Например, с помощью Linq to Objects (например, ваши бизнес-объекты) вы можете «проецировать» свои результирующие наборы (списки) анонимные классы.

Главный недостаток этого заключается в том, что в настоящее время они не будут очень переносимыми, однако с .NET 4.0 и динамическими классами, я полагаю, вам не нужно будет использовать стороннее решение, я считаю,есть инструменты с самой рамкой.

...