c# – 名称与泛型类型

c# – 名称与泛型类型,第1张

概述我试图在通用接口上获取一个方法的名称.我希望这可以工作,类型部分将是一个有效的类型: //This does not compilenameof(IGenericInterface<>.Method)//This would compiletypeof(IGenericInterface<>) 我认为这应该是有效的C#6或者我错过了一些东西,或者他们是一个更好的方法来做到这一点.我不想使用 我试图在通用接口上获取一个方法的名称.我希望这可以工作,类型部分将是一个有效的类型:
//This does not compilenameof(IGenericInterface<>.Method)//This would compiletypeof(IGenericInterface<>)

我认为这应该是有效的C#6或者我错过了一些东西,或者他们是一个更好的方法来做到这一点.我不想使用方法名称的字符串,就好像方法被重命名的代码会中断而没有任何构建时间错误.

解决方法 这是预期的.根据 documentation,您的表达式是不允许的,因为它是指未绑定的通用类型:

Because the argument needs to be an Expression syntactically,there are many things disallowed that are not useful to List. The following are worth mentioning that produce errors: predefined types (for example,int or voID),nullable types (Point?),array types (Customer[,]),pointer types (Buffer*),qualifIEd alias (A::B),and unbound generic types (Dictionary<,>),preprocessing symbols (DEBUG),and labels (loop:).

您可以通过提供通用参数来解决此限制:

nameof(IGenericInterface<object>.Method)

注意:我认为微软应该调整name的功能,以允许引用未绑定的通用类型的方法.

总结

以上是内存溢出为你收集整理的c# – 名称与泛型类型全部内容,希望文章能够帮你解决c# – 名称与泛型类型所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1259377.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存