有没有办法在c#中动态获取方法名称?
发布时间:2020-12-16 01:58:53 所属栏目:百科 来源:网络整理
导读:我有一个案例,我将方法名称作为字符串传递给函数,但我不希望它硬编码. 例如 void MyMethodName(){ // some code}void SomeOtherMethod(){ SomeExternalLibrary.ExternalClass.FunctionWithStringParameter("MyMethodName");} 我想要这样的东西: FunctionWit
我有一个案例,我将方法名称作为字符串传递给函数,但我不希望它硬编码.
例如 void MyMethodName() { // some code } void SomeOtherMethod() { SomeExternalLibrary.ExternalClass.FunctionWithStringParameter("MyMethodName"); } 我想要这样的东西: FunctionWithStringParameter(MyMethodName.ToString()); 这样我可以通过“查找所有引用”来跟踪方法调用,并且我可以毫无后顾之忧地使用重构. 解决方法
也许最简单的方法是提供一个重载FunctionWithStringParameter,它可以将一个委托作为参数.
过载可能很简单: void FunctionWithStringParameter(Action d) { FunctionWithStringParameter(d.Method.Name); } 并称之为: FunctionWithStringParameter(MyMethodName); 要接受具有不同签名的方法,您必须提供许多不同的重载,或者接受Delegate作为参数,如下所示: void FunctionWithStringParameter(Delegate d) { FunctionWithStringParameter(d.Method.Name); } 不幸的是,如果你这样做,你必须通过指定委托类型来调用它: FunctionWithStringParameter((Action)MyMethodName); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |