您建议在代码中使用哪些工具或技术来发现C#扩展方法?它们位于正确的命名空间中,但可能位于解决方案中的任何文件中。
具体做法是:
我有Resharper(v4),所以如果有一个我不知道的机制 - 请分享!
答案 0 :(得分:5)
如果您有源,那么您可以使用正则表达式搜索this Type identifier
。考虑到它必须是函数的第一个参数,这样的事情应该可以解决这个问题:
\(this:b+:i:b+:i
至少通过这种方式,您可以发现扩展方法的定义位置并添加该命名空间,然后依赖智能感知。只是在一个非常简单的项目上运行它,在任何地方都有很多扩展方法,这是一种享受。唯一的误报是这样的:
if(this is Blah...
我们可以通过在搜索中添加static
来修复,因为扩展方法必须是静态的:
static.*\(this:b+:i:b+:i
这不适用于以下情况:
public
static ExtensionMethod(
this int
iVal) {
}
但这是正则表达式的限制。我确信certain somebodies可以告诉你所有关于使用正则表达式解析语言的痛苦。
现在,我认为IDE缺少的是能够识别非导入命名空间中的扩展方法。与您知道类名时类似,如果您键入它,IDE将为您提供明确使用它或导入命名空间的提示。毕竟,这就是我导入所有命名空间的方式,并经常发现自己试图对扩展方法做同样的事情。
答案 1 :(得分:1)
这是相当低技术的,但Ctrl-F如何搜索“this:b + MyClassName”?
答案 2 :(得分:0)
如果你正在使用VS,我猜你是intellisense将为你显示给定对象的所有可用扩展方法(标记为添加到通常实例方法图标的蓝色东西)。该列表可能因文件而异(一个名为aMethod的方法可能意味着在两个不同的文件中有两个不同的东西),尽管对象类型相同(基于找到扩展方法的方式)
答案 3 :(得分:0)
如果您有resharper,只需按住ctrl键并单击该方法。