C#属性自动运行方法

时间:2015-02-13 19:26:21

标签: c#-4.0 custom-attributes

我不确定这是否完全可能。但我想要做的是创建一个属性,当我调用run方法时,然后运行具有特定run属性的所有方法。我意识到这可以通过代表来完成,但我觉得如果可以通过属性实现它可能会更清晰一些。我应该注意,运行顺序并不重要。

基本设计:

//This is the method called that should start off the attribute chain
public void Run(){
  //calling logic in here
}

[AutomatedRun]
private void Method1(){

}

[AutomatedRun]
private void Method2(){

}

1 个答案:

答案 0 :(得分:3)

Attributes只是元数据。除非你寻找它们并采取行动,否则它们是无用的。因此,在这种情况下,您需要使用AutomatedRun获取具有Reflection属性的方法并将其调用:

var methods = typeof(YourClass)
     .GetMethods(BindingFlags.NonPublic | BindingFlags.Instance)
     .Where(mi => Attribute.IsDefined(mi, typeof(AutomatedRunAttribute)));

foreach(var m in methods)
    m.Invoke(yourInstance);