【问题标题】:C# Attribute To Auto Run Method自动运行方法的 C# 属性
【发布时间】:2015-02-13 19:26:20
【问题描述】:

我不确定这是否完全可能。但是我想做的是创建一个属性,当我调用 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(){

}

【问题讨论】:

  • 您需要使用反射...查找每个方法或属性的属性,然后通过调用属性的方法和方法本身来执行它。

标签: c#-4.0 custom-attributes


【解决方案1】:

Attributes 只是元数据。除非您寻找它们并执行操作,否则它们是无用的。所以在这种情况下,您需要使用Reflection 获取那些具有AutomatedRun 属性的方法并调用它们:

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

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

【讨论】:

    猜你喜欢
    • 2014-04-01
    • 1970-01-01
    • 2012-11-18
    • 1970-01-01
    • 2020-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-27
    相关资源
    最近更新 更多