【问题标题】:Resharper: Ambiguous InvocationResharper:模棱两可的调用
【发布时间】:2014-09-28 13:11:40
【问题描述】:

使用 Resharper 我收到以下消息:

不明确的调用解决方案 ITicket.sln 项目票务 ITicket\frmMainTicket.cs:530 不明确的调用:void DisableAllFields()(在 frmMainTicket 类中)void DisableAllFields() (在 frmMainTicket 类中) 匹配

我是编码新手,需要一些帮助。如果我正确理解这一点,基本上就是说我正在调用一个方法并且不确定我应该使用什么方法?我以前从未使用过 Resharper。也许我对模糊调用是什么感到困惑,不过我已经对此进行了一些研究。 提前谢谢你。

来自代码:

        private void SetViewForBugnetTicket()
    {
        DisableAllFields();

        btnSendBugnetDev.Enabled = false;
    }

方法:

        private void DisableAllFields()
    {
        tbSubject.Enabled = false;
        cmbCreatedBy.Enabled = false;
        cmbDepartment.Enabled = false;
        cmbCompany.Enabled = false;
        dtpCreatedOn.Enabled = false;
        dtpAssignedOn.Enabled = false;
        dtpDueDate.Enabled = false;
        cmbAssignedBy.Enabled = false;
        cmbMainTech.Enabled = false;
        cmbStatus.Enabled = false;
        cmbPriority.Enabled = false;
        cmbCategory.Enabled = false;
        cmbTicketType.Enabled = false;
        radBtnNoTraining.Enabled = false;
        radBtnYesTraining.Enabled = false;
        btnAddNoteDev.Enabled = false;
        tbNoteAdd.Enabled = false;
        rtbDescription.Enabled = false;
        tsBtnSaveTicket.Enabled = false;
        btnSetStatus.Enabled = false;
        btnResolve.Enabled = false;
        tbResolution.Enabled = false;
        cmbResolution.Enabled = false;
        btnBrowse.Enabled = false;
    }

【问题讨论】:

  • 这是说你在 2 个不同的类中有 2 个同名的方法“void DisableAllFields() (in class frmMainTicket) void DisableAllFields() (in class frmMainTicket) match”。在 frmMainTicket 和 frmMainTicket 中有一个名为 DisableAllFields 的方法。我很困惑为什么会这样说,因为这两个类都具有相同的名称
  • 如果在不同的命名空间中有两个 frmMainTicket 类会发生这种情况吗?
  • Resharper 是在说这个还是你得到编译器错误? Resharper 尝试先发制人地显示警告/错误,但这并不总是与编译器匹配。归根结底,只有编译器错误才重要,就生成 exe / dll 而言。
  • 完全没有编译错误,程序运行良好。

标签: c# resharper ambiguous invocation resharper-8.0


【解决方案1】:

我们遇到了这个问题。它发生在带有 VB.net 的 R# 9.2 VS2013 和 VS2015 中。 我们在声明为的方法中有局部变量

Dim Yield as Decimal

后来做了一个任务。

Yield = CDbl(txtFoo.Text)

解决方法是使用字符[] 来限定作为保留关键字的令牌

Dim [Yield] as Decimal
[Yield] = CDbl(txtFoo.Text)

除此之外: 是的。它实际上是 CDbl。 Double 和 Decimal 之间的混淆在这个代码库中比比皆是。它可能需要每天进行 WTF。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-13
    • 2011-06-30
    • 2019-06-07
    • 2012-12-09
    • 1970-01-01
    • 2019-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多