带有属性的方法的BindingFlags

本文关键字:方法 BindingFlags 属性 | 更新日期: 2023-09-27 18:18:34

是否可以将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(){}

我使用反射来添加到一个列表框中我所有的void方法,但我想只添加具有此属性的方法。

这是我如何使用BindingFlags:

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

其中methArrMethodInfo -instance

带有属性的方法的BindingFlags

在这种情况下不使用绑定标志。

相反,您必须做的是枚举给定类型的方法,并评估方法是否使用特定属性进行装饰。

下面的代码将使用Linq:

找到myType中使用TestMethod属性装饰的所有方法:
var methArr =
    e.myType.GetMethods(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly)
        .Where(method => method.GetCustomAttributes(typeof (TestMethodAttribute), false).Any());