【问题标题】: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),这非常有用,隐式运算符有没有类似的东西?

我认为这是尽可能使用扩展方法的另一个原因。

【问题讨论】:

    标签: c# .net operators implicit


    【解决方案1】:

    也许像 Resharper 这样的东西可以做到,但我不确定。当我需要查找用法时,我会按照穷人的方式进行,并删除隐式运算符,重新编译并查找错误。

    我想理论上编译器可能会错过一个案例,如果它可以使用不同的隐式运算符(或切换到方法的“对象”类型重载),但它往往适用于我的用法。我确信有更好的解决方案,但到目前为止它对我有用。

    编辑:刚刚有一个想法并进行了测试。将隐式运算符标记为[Obsolete] 实际上会导致编译器警告,无论您在哪里使用它!我想这将捕获那些存在其他有效重载的极端情况,而您完全删除了隐式运算符会错过这些情况。

    【讨论】:

    • Resharper 也没有找到隐式运算符的用法。
    • 也做了同样的穷人的方式。 :) 如果您有巨大的解决方案,这将是相当令人生畏的
    • 将隐式运算符标记为[Obsolete] 效果更好,因为它可以捕获其他重载情况。
    • 这是一个很好的克里斯,这样你至少可以得到警告(不破坏构建)。如果其他人想出更好的主意,我会等待。
    • 当然;我想知道是否有办法让它通过标准的Find Symbol Results 窗口检查/报告,如果只是为了保持工作流程的一致性而不必更改代码。尤其是在您查看 3rd 方库时,您无法自己完全添加过时的属性。
    猜你喜欢
    • 1970-01-01
    • 2010-10-15
    • 2016-12-05
    • 1970-01-01
    • 2016-12-23
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    • 2010-10-21
    相关资源
    最近更新 更多