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());