Объект к утилите отображения объекта

Проблема заключалась в том, что в клонированном репозитории отсутствовал файл с именем pyreadability.py. Пакет был не тот, который я думал. Он был реализован владельцем репозитория (который забыл добавить файлы в репозиторий) и просто имеет имена, похожие на пакеты python, которые доступны для установки.

5
задан Wayne Hartman 16 May 2009 в 00:35
поделиться

4 ответа

Итак, по-видимому, не удовлетворенный решением для среды выполнения, я написал небольшую утилиту, которая будет создавать сопоставления в коде. Вы можете скачать исходный код ниже и написать лучшую обработку ошибок и т. Д. И т. Д. Я был бы признателен за любые крутые изменения, которые вы делаете, это было сделано в спешке, но работает. Пожалуйста, примите во внимание, что код выпускается под LGPL .

Исходный код утилиты сопоставления объектов с объектами

ОБНОВЛЕНИЕ 23 ИЮНЯ 2009 г. : Я внес некоторые обновления в код, который очистил его (немного), а также добавлена ​​возможность сохранять отображение в файл, чтобы вы могли позже его изменить.

6
ответ дан 18 December 2019 в 06:12
поделиться

Вы можете попробовать AutoMapper . Похоже на то, что вы ищете.

14
ответ дан 18 December 2019 в 06:12
поделиться

Есть еще интересный проект под названием Otis . Ниже приведен пример сопоставления * .otis.xml со страницы документации:

<?xml version="1.0" encoding="utf-8" ?> 
<otis-mapping xmlns="urn:otis-mapping-1.0">
<class name="Otis.Tests.UserDTO, Otis.Tests" source="Otis.Tests.Entity.User, Otis.Tests" >
    <member name="Id" />
    <member name="Age" />
    <member name="UserName" expression="$UserName.ToUpper()" nullValue="[unknown]" />
    <member name="FullName" expression="[$FirstName + ' ' + $LastName]" />
    <member name="ProjectCount" expression="$Projects.Count" />
    <member name="Title" expression="$Gender" >
        <map from="Gender.Male" to="Mr." />     <!-- projections -->
        <map from="Gender.Female" to="Mrs." />
    </member> 
    <member name="Birthday"  expression="$BirthDate" format="Born on {0:D}"/>
    <member name="ProjectCount" expression="$Projects.Count" />
    <member name="AvgTaskDuration" expression="avg:$Projects/Tasks/Duration" />
    <member name="MaxTaskDuration" expression="max:$Projects/Tasks/Duration" />             
</class>

Чтобы прочитать файлы сопоставления из сборки:

// configure the new Configuration object using metadata of types in the current assembly
Configuration cfg = new Configuration();            // instantiate a new Configuration, one per application is needed
cfg.AddAssembly(Assembly.GetExecutingAssembly());   // initialize it

Хм, где я видел это раньше? ;)

3
ответ дан 18 December 2019 в 06:12
поделиться

используйте ValueInjecter , с его помощью вы можете сопоставить что угодно с чем угодно, например

  • объект <-> объект
  • объект <-> Form / WebForm
  • DataReader -> объект

и имеет такие интересные функции, как: выравнивание и выравнивание

3
ответ дан 18 December 2019 в 06:12
поделиться