我需要编写一个方法,将消耗其他方法作为“动作”来处理它(例如日志记录)。功能<T>与动态数量的参数类型
这里是我的方法:
public static void Call(Func<T, TResult> action){
Log.Debug(action.Method.Name + " method called");
}
,现在我想在每一个可能的方法坚持,像
private void Method1 (string param1, int param2) { ...}
private ServiceResult Method2 (UserInfo param1, string param2, bool param3, double param4) { ... }
,我想这样称呼它
Call(Method1); // output: "Method1 method called"
Call(Method2); // output: "Method2 method called"
我问题是,我需要为我的Call-Me声明“Func <>”参数的修复参数类型的ThOD。我怎么能以动态/通用的方式做到这一点?编辑:我在.NET Compact Framework上工作,所以我只有.NET 3.5 CF可用,不能使用每个类或类型。
如果你不知道在编译时的方法名,看看'[CallerMemberName]'。如果你这样做,使用'nameof'。 – zaitsman
除了其他任何东西,从代码可读性的角度来看,这听起来并不好听......你真的不想为每个方法手动添加一些东西(并且必须阅读代码)。您可能想要查看.NET的AOP框架。 –