Переберите свойства модели TПостроение поиска - PullRequest
0 голосов
/ 28 апреля 2011

Я собираюсь построить поисковую страницу на веб-сайте, и поиск будет обширным с парой моделей и с каждой моделью, имеющей много свойств.

Есть ли способ сделать это в общем виде или использовать рефлектор, как я видел в некоторых постах? Мне нужно несколько указателей или советов о том, как подойти к этому. Высоко ценю это.

Ответы [ 2 ]

1 голос
/ 28 апреля 2011

Можете ли вы дать более подробную информацию?

Какова цель вашего поиска?Дайте мне 30-секундную версию, чтобы я мог понять, к чему вы клоните.

Планируете ли вы использовать RegEx и определение слова?

Какие значения считаются совпадениями?

Я предполагаю, что вы хотите искать свойства только по объектам / моделям.Верно?

Хотите увидеть каждое свойство или только некоторые из них?

Какие данные хранятся в свойствах?(строка, байт [], enum и т. д.)

Идеи мозгового штурма:

А как насчет поиска на одной стороне сервера БД, а не в ваших гидратированных объектах?Может быть быстрее (во время выполнения) использовать вашу БД, чем загружать все объекты в память, а затем размышлять о них.

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

Если вам нужен код отражения, я написал что-то, что показывает много информации об объекте через отражение.Я написал это давным-давно (декабрь 2009).Я не уверен, что он делает то, что вы хотите.Взглянуть.Если это работает для вас, используйте это!( Ссылка )

1 голос
/ 28 апреля 2011

Вы можете использовать рефлексию, чтобы получить необходимую информацию.Если у вас тип T, вы можете использовать

typeof(T).GetProperties()

, чтобы получить все открытые свойства.То же самое возможно для полей, методов, ... Если вам нужно больше метаданных для генерации поиска, вы можете использовать атрибуты для аннотирования свойств (или полей, методов, ...). Так я бы начал.Дальнейшие детали зависят от вашего конкретного случая использования.

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