2010-01-22 2 views
2

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

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

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

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

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

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

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

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

+1

Вы видели этот вопрос? http://stackoverflow.com/questions/159017/named-string-formatting-in-c – Jimmy

ответ

1

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

+0

Спасибо Marc. Я еще не видел динамическую библиотеку LINQ. Если это поможет мне найти свойства на отраженных объектах, это будет потрясающе !! – AlwaysAProgrammer

Смежные вопросы