如何为显式接口方法设置不同的resharper命名约定?

时间:2009-09-16 18:11:48

标签: c# resharper

我喜欢resharper。

但是,我有以下问题:

我对私有方法的命名约定是骆驼。

所以非常好。

然而,当我在

中明确地实现接口方法时
void IMyInterface.MyMethod (...)

resharper将其视为私有方法,并希望将其更改为IMyInterface。*** m *** yMethod。 有没有办法忽略显式接口实现的命名约定?

3 个答案:

答案 0 :(得分:0)

ReSharper的某些版本中存在一个错误,很久以前就修复了它。你用的是什么版本?您是否尝试过最新版本,例如4.5.1或其中一个最新的夜莺?

答案 1 :(得分:-1)

那不行。

Resharper正在使用界面本身提供的名称 - 为了实现它,您无法更改此名称(甚至是套管)。

“MyMethod”是“IMyInterface”中指定的名称。您必须保留外壳以实现该方法,并且由于您明确实现它,因此没有选项。


评论后编辑:

这是一个例子。我刚刚创建了一个界面,如下所示:

internal interface IMyInterface
{
    void testmethod();
}

这违反了我目前的命名惯例(Resharper要求在这种情况下将testmethod大写)。

如果我然后创建一个实现此接口的类:

class MyClass : IMyInterface
{

我选择“明确地实现接口”,Resharper创建:

class MyClass : IMyInterface
{
    #region IMyInterface Members

    void IMyInterface.testmethod()
    {
        throw new NotImplementedException();
    }

    #endregion
}

在这种情况下,不会抱怨关于行中的大小写:void IMyInterface.testmethod()

使用与接口中的接口不同的外壳将无法实现接口,但无论是显式定义还是隐式定义,接口都无法确定方法的名称,包括大小写。

我认为这种混淆可能是因为您假设testmethod 私有 - 它不是私有方法,而是公开的,显式实现IMyInterface.testmethod,这就是你可以这样做的原因:

IMyInterface myClass = new MyClass();
myClass.testmethod(); // This is public on IMyInterface, not private!

您无法更改实现接口的方法的情况 - 这是.NET限制,而不是Resharper限制。

答案 2 :(得分:-1)

不允许接口方法为私有。明确使用界面时,您将使用

void IMyInterface.MyMethod(...)

没有辅助功能设置。实施将是公开的或内部的,取决于接口是公共的还是内部的。