BindingFlags для методов с атрибутами

Можно ли использовать BindingFlags для методов, которые имеют атрибуты? Я посмотрел через MSDN BindingFlags и ничего не обнаружилось. Вот как выглядит один из моих методов:

[TestMethod()
,TestCategory("ActionCol")
,TestCategory("DataDriven")
,DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", @"|DataDirectory|\ActionCol\actionCol.csv", "actionCol#csv", DataAccessMethod.Sequential)
,DeploymentItem(@"..\ActionCol\actionCol.csv")]
public void ActionCol_Insert_LeftGrid(){}

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

Вот как я использую BindingFlags:

methArr = e.myType.GetMethods(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly);

куда methArr является MethodInfo-пример

1 ответ

Решение

В этом случае флаги привязки не используются.

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

Следующий код найдет все методы myType которые украшены TestMethod атрибут с использованием Linq:

var methArr =
    e.myType.GetMethods(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly)
        .Where(method => method.GetCustomAttributes(typeof (TestMethodAttribute), false).Any());
Другие вопросы по тегам