Преобразование строк в деревья выражений? - PullRequest
2 голосов
/ 22 января 2010

У нас есть требование предоставить удобные описания типов. Мы создали файл ресурсов, который отображает тип на описание.

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

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

например Экземпляр может быть адресом ключ будет MyNameSpace_MyPublicTypes_Address (скажем, полное имя «MyNameSpace.MyPublicTypes.Address»)

Описание может быть следующим: «Пользователь остается в {State.City} в {Страна}» - Состояние и Страна - это свойства класса Address. У государства есть собственность Город.

Возможно ли иметь что-то вроде 'obj => obj.State.City' или 'obj => obj.Country'? или какое-то выражение?

Я использую obj, потому что это отраженный экземпляр.

Ценю любую помощь. Не уверен, задавался ли этот вопрос раньше.

1 Ответ

1 голос
/ 22 января 2010

Это в значительной степени то, что делает динамическая библиотека LINQ (один из примеров .NET 3.5). Источник все доступно или для использования см. Здесь . Вы должны быть в состоянии отследить код, который анализирует строки в Expression s. Конечно, нетрудно разделить на . и собрать его вручную; У меня есть динамическая OrderBy реализация здесь , которая делает это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...