加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在c#中获取函数的名称

发布时间:2020-12-15 06:53:56 所属栏目:百科 来源:网络整理
导读:在Unity中使用协同程序或InvokeRepeating时,必须使用要调用的函数的名称给出一个字符串.虽然如果您更改该函数的名称,这是一个痛苦,因为您必须记住更改使用它的协同程序.有没有更清洁的方法来做到这一点? 目前看起来像这样: InvokeRepeating ("SendChangedV
在Unity中使用协同程序或InvokeRepeating时,必须使用要调用的函数的名称给出一个字符串.虽然如果您更改该函数的名称,这是一个痛苦,因为您必须记住更改使用它的协同程序.有没有更清洁的方法来做到这一点?

目前看起来像这样:

InvokeRepeating ("SendChangedValues",SEND_RATE,SEND_RATE);

虽然这样做会很好

InvokeRepeating (SendChangedValues.Name(),SEND_RATE); //or
InvokeRepeating (functions.GetName(SendChangedValues),SEND_RATE);

这可能在c#中吗?或者其他的东西,确保我在更改功能的名称而不更改这些字符串时会收到错误/警告.

编辑1:我可以想到的最干净的事情是使用函数名称创建一个const字符串,并将其放在函数本身之前.所以很难忘记改变字符串,因为它就在它的正上方,我也只需要改变一个const字符串来改变所有的协同程序.

谢谢!

解决方法

嗯..如果是下一个C#版本,你可以使用nameof运算符.

现在,这是否有助于你的事业?

private static string GetFunctionName(Action method)
{
 return method.Method.Name;
}

称为使用:

string methodName = GetFunctionName(SendChangedValues);

你可能想要探索不同的委托类型.. Action,Func等

上面唯一的问题是,对于每个方法签名,您可能需要定义正确的签名/重载以获取名称.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读