Есть ли атрибут рамки, чтобы скрыть член от отражения в .Net? - PullRequest
3 голосов
/ 03 марта 2009

Есть ли атрибут, который скрывает члена (в частности, свойство) от typeof(MyType).GetProperties() в .net?

Я ищу быстрое исправление - то есть не создание пользовательских атрибутов и т.д ..

спасибо

Ответы [ 4 ]

8 голосов
/ 03 марта 2009

номер

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

(В конце отражения используются те же метаданные, которые использует CLR, включая JIT.)

1 голос
/ 03 марта 2009

Взгляните на PropertyDescriptor вместо PropertyInfo.

Это может быть обеспечено путем переопределения двух методов Properties в производном классе TypeConverter.

Немного изобретательности, вы можете заставить его делать что угодно.

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

class TagName
{
  Culture culture;
  string content;
}

[TypeConverter(typeof(TagConverter))]
class Tag
{
  TagName[] tagNames;
}

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

1 голос
/ 03 марта 2009

Эта конкретная перегрузка GetProperties (без параметров) возвращает только открытые свойства. Таким образом, вы можете пометить свойство как частное / внутреннее. В противном случае я согласен с Ричардом выше.

0 голосов
/ 03 марта 2009

Если бы это было возможно, Microsoft была бы первой, кто сделал бы это для сборок .NET :).

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