Проблема заключалась в том, что в клонированном репозитории отсутствовал файл с именем pyreadability.py
. Пакет был не тот, который я думал. Он был реализован владельцем репозитория (который забыл добавить файлы в репозиторий) и просто имеет имена, похожие на пакеты python, которые доступны для установки.
Итак, по-видимому, не удовлетворенный решением для среды выполнения, я написал небольшую утилиту, которая будет создавать сопоставления в коде. Вы можете скачать исходный код ниже и написать лучшую обработку ошибок и т. Д. И т. Д. Я был бы признателен за любые крутые изменения, которые вы делаете, это было сделано в спешке, но работает. Пожалуйста, примите во внимание, что код выпускается под LGPL .
Исходный код утилиты сопоставления объектов с объектами
ОБНОВЛЕНИЕ 23 ИЮНЯ 2009 г. : Я внес некоторые обновления в код, который очистил его (немного), а также добавлена возможность сохранять отображение в файл, чтобы вы могли позже его изменить.
Вы можете попробовать AutoMapper . Похоже на то, что вы ищете.
Есть еще интересный проект под названием 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
Хм, где я видел это раньше? ;)
используйте ValueInjecter , с его помощью вы можете сопоставить что угодно с чем угодно, например
и имеет такие интересные функции, как: выравнивание и выравнивание