Существуют ли какие-либо фреймворки или утилиты (в .СЕТЕВОЕ пространство) для автоматической генерации объектов передачи данных из бизнес-объектов

StackOverflow https://stackoverflow.com/questions/2414312

Вопрос

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

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

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

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

Это было полезно?

Решение

Скорее всего, вы сочтете AutoMapper весьма полезным: http://www.codeplex.com/AutoMapper

Редактировать, в ответ на комментарий OP:

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

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

Другие советы

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top