Как найти общедоступные перечисления и общедоступные статические методы, определенные в классе, посредством отраженияC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как найти общедоступные перечисления и общедоступные статические методы, определенные в классе, посредством отражения

Сообщение Anonymous »

Я использую отражение для проверки сборки на наличие типов (классов), реализующих определенный интерфейс. Когда я нахожу такой тип, мне нужно проверить его, чтобы найти методы и перечисления, отмеченные определенным атрибутом.
Для поиска методов я использую следующее:

Код: Выделить всё

foreach (MemberInfo member in types[index].FindMembers(MemberTypes.Method,
BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance,
new MemberFilter(WorkflowMethodFilter), ""))
WorkflowMethodFilter проверяет MemberInfo на наличие настраиваемого атрибута.
Это отлично работает, например,

Код: Выделить всё

[MyCustomAttr]
public void Method1() {...}
Но статические методы не найдены при вызове FindMembers. То есть WorkflowMethodFilter никогда не вызывается для статических методов.

Код: Выделить всё

[MyCustomAttr]
public static void Method2() {...}
Есть ли способ найти статические методы?
Есть идеи, как мне найти перечисления, которые определены внутри класса?

Код: Выделить всё

public class Foo : IMyCustomInterface
{
[MyCustomAttr]
public enum MyEnum {...}
}
Я смотрел и смотрел, но не смог найти способ найти перечисление посредством отражения.

Подробнее здесь: https://stackoverflow.com/questions/793 ... ough-refle
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

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

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»