2013-01-16 2 views
1

Используя отражение, могу ли я перечислить поля в #region?Используя отражение, могу ли я перечислить поля в #области?

В противном случае вы можете подумать о других способах достижения «группировки» полей в классе, чтобы их перечислить? Пометка всех полей с атрибутом не является вариантом, так как это на самом деле то, что я хотел бы отключить.

+3

'# region' является директивой предварительного процессора. Он не компилируется. Поэтому вы не можете использовать отражение. возможно, используя VS api для изучения файла .cs? –

+0

Почему вы не можете пометить поля атрибутом? Поля могут иметь несколько атрибутов. – shf301

ответ

6

Если вам нужно сгруппировать некоторые поля, они, вероятно, принадлежат к их собственному классу.

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

0

Я не думаю, что это возможно, потому что регионы являются препроцессорными директивами и не скомпилируются.

Возможно, вам следует включить образец того, чего вы хотите достичь. Я думаю, что будет лучшее решение, чем использование регионов. Как использовать один класс для региона и создать свойство?

-1

Джером, я думал, что возрожу ваш вопрос, поскольку у меня есть то же требование.

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

Два решения, которые могут быть достаточными: 1) Шаблоны T4 для генерации частичной логики класса, которая добавляет необходимые атрибуты. Другими словами, T4 содержит логику группировки. Это, вероятно, слишком уродливо, чтобы заслужить серьезное внимание.

2) События предварительной сборки, которые изменяют код для обеспечения того, чтобы сгруппированные элементы региона были отмечены необходимыми атрибутами. Это часть компромисса.

Было бы очень интересно узнать о любых методах манипуляции с областью предварительной сборки.

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

+1

Вам следует рассмотреть вопрос о публикации нового вопроса, поскольку это не прямой ответ на вопрос. Это ответ/новый вопрос – AK47

+0

Это не отвечает на вопрос. Если у вас есть другой вопрос, вы можете задать его, нажав [Ask Question] (https://stackoverflow.com/questions/ask). Вы также можете [добавить щедрость] (https://stackoverflow.com/help/privileges/set-bounties), чтобы привлечь больше внимания к этому вопросу, как только у вас будет достаточно [репутации] (https://stackoverflow.com/help/ Что-репутация). - [Из обзора] (/ review/low-quality-posts/17847776) – mmgross

+0

Я не вижу, что это отдельный вопрос. Forkbeard предлагал два приятных решения (используя «T4 template» и «Pre-Build event») на вопрос – Neverever

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