C# 属性到自动 运行 方法
C# Attribute To Auto Run Method
我不确定这是否完全可行。但是我想做的是创建一个属性,当我调用 运行 方法时,所有具有特定 运行 属性的方法都是 运行。我意识到这可以通过委托来完成,但我觉得如果可以通过属性来实现它可能会更简洁一些。我应该注意到 运行 顺序并不重要。
基本设计:
//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(){
}
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);
我不确定这是否完全可行。但是我想做的是创建一个属性,当我调用 运行 方法时,所有具有特定 运行 属性的方法都是 运行。我意识到这可以通过委托来完成,但我觉得如果可以通过属性来实现它可能会更简洁一些。我应该注意到 运行 顺序并不重要。
基本设计:
//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(){
}
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);