Assembly.GetCustomAttributes все еще считается лучшим подходом? - PullRequest
1 голос
/ 20 апреля 2011

Я хочу указать на каталог DLL и прочитать атрибуты классов в нем. Большинство классов имеют собственный атрибут с различными свойствами, которые я хочу прочитать.

У меня есть старый код, который использует Assembly.GetCustomAttributes

Это все еще считается лучшим подходом?

Ответы [ 2 ]

2 голосов
/ 20 апреля 2011

Assembly.GetCustomAttributes возвращает вам атрибуты сборки - это метаданные сборки.Обычно они помещаются в AssemblyInfo.cs, в то время как они могут быть размещены где угодно.

Не следует путать с class пользовательскими атрибутами - или свойством / методом / полем / и т.д.

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

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

Отражение - единственный способ прочитать пользовательские атрибуты. Некоторые псевдопользовательские атрибуты отражаются в свойствах класса System.Type. Загруженные сборки «обычно» не могут быть выгружены из домена приложения, поэтому в идеале вы хотите загрузить сборки в контекст только для отражения (есть методы System.Reflection.Assembly.ReflectionOnlyLoad и ReflectionOnlyLoadFrom), чтобы они могли быть выгружены, когда вы захотите Информация.

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