Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何为显式接口方法使用不同的resharper命名约定?_C#_Resharper - Fatal编程技术网

C# 如何为显式接口方法使用不同的resharper命名约定?

C# 如何为显式接口方法使用不同的resharper命名约定?,c#,resharper,C#,Resharper,我喜欢雷夏普 但是,我有以下问题: 我对私有方法的命名约定是camel 就这么好 然而,当我明确地实现一个接口方法时,如 void IMyInterface.MyMethod (...) resharper将其视为私有方法,并希望将其更改为IMyInterface.**m***y方法。 有没有一种方法可以忽略显式接口实现的命名约定?这是行不通的 Resharper正在使用接口本身提供的名称-为了实现它,您不能更改此名称(甚至是大小写) “MyMethod”是“IMyInterface”中指定的

我喜欢雷夏普

但是,我有以下问题:

我对私有方法的命名约定是camel

就这么好

然而,当我明确地实现一个接口方法时,如

void IMyInterface.MyMethod (...)
resharper将其视为私有方法,并希望将其更改为IMyInterface.**m***y方法。 有没有一种方法可以忽略显式接口实现的命名约定?

这是行不通的

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
}
在这种情况下,it不会抱怨行中的套管:
void IMyInterface.testmethod()

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

我认为这种混淆可能是因为您假设,在我的例子中,
testmethod
私有的——它不是私有的方法,它是
IMyInterface.testmethod
的公开、显式实现,这就是为什么您可以这样做:

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

您无法更改实现接口的方法的大小写-这是一个.NET限制,而不是Resharper限制。

接口方法不允许是私有的。当显式使用接口时,您将使用

void IMyInterface.MyMethod(...)

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

在某些版本的ReSharper中有一个bug,它在很久以前就被修复了。你用什么版本?您是否尝试过最新的版本,如4.5.1或最新的nightlies?

但Resharper似乎忽略了这一点,并愉快地改变了隐式实现方法的情况,因为它将它们视为私有方法。我认为问题是,如何防止Resharper这样做,而不是如何让它这样做。哦,如果是这样的话,那就是去掉修饰语“private”的问题。不过,我相信Resharper(从我刚才的测试来看)足够聪明,不会改变显式实现接口的情况。奇怪的是,为什么否决-我刚刚再次测试了这个,现在Resharper会让你显式实现一个违反规则的接口。刚刚添加了完整、详细的解释,包括使用resharper在新项目中进行测试。感谢您抽出时间。然而,这并没有回答我的问题。我不习惯将我的方法名更改为testMethod。我希望resharper停止抱怨。我正在使用resharper 4.5。它是否太旧了?对于私有方法,使用相同的规则和显式实现,它在5.0.1659.36中没有任何问题