如何使用隐式运算符方法获取“查找用法”?
Posted
技术标签:
【中文标题】如何使用隐式运算符方法获取“查找用法”?【英文标题】:How To Get "Find Usages" working with implicit operator methods? 【发布时间】:2012-05-22 01:42:17 【问题描述】:我从不喜欢隐式运算符(更喜欢扩展方法),因为在代码中发生转换/转换时很难直观地看到。
想象一下,如果你有下面的例子:
public static implicit operator Deal(string dealAsXml)
//convert the xml into Deal object
上述隐式运算符可帮助您将 Xml 格式的交易转换/转换为交易对象。
通常当你在一个方法上右击时,你可以在它上面使用“Find Usages”(或Alt+F7),这非常有用,隐式运算符有没有类似的东西?
我认为这是尽可能使用扩展方法的另一个原因。
【问题讨论】:
【参考方案1】:也许像 Resharper 这样的东西可以做到,但我不确定。当我需要查找用法时,我会按照穷人的方式进行,并删除隐式运算符,重新编译并查找错误。
我想理论上编译器可能会错过一个案例,如果它可以使用不同的隐式运算符(或切换到方法的“对象”类型重载),但它往往适用于我的用法。我确信有更好的解决方案,但到目前为止它对我有用。
编辑:刚刚有一个想法并进行了测试。将隐式运算符标记为[Obsolete]
实际上会导致编译器警告,无论您在哪里使用它!我想这将捕获那些存在其他有效重载的极端情况,而您完全删除了隐式运算符会错过这些情况。
【讨论】:
Resharper 也没有找到隐式运算符的用法。 也做了同样的穷人的方式。 :) 如果您有巨大的解决方案,这将是相当令人生畏的 将隐式运算符标记为[Obsolete]
效果更好,因为它可以捕获其他重载情况。
这是一个很好的克里斯,这样你至少可以得到警告(不破坏构建)。如果其他人想出更好的主意,我会等待。
当然;我想知道是否有办法让它通过标准的Find Symbol Results
窗口检查/报告,如果只是为了保持工作流程的一致性而不必更改代码。尤其是在您查看 3rd 方库时,您无法自己完全添加过时的属性。以上是关于如何使用隐式运算符方法获取“查找用法”?的主要内容,如果未能解决你的问题,请参考以下文章