我喜欢resharper。
但是,我有以下问题:
我对私有方法的命名约定是骆驼。
所以非常好。
然而,当我在
中明确地实现接口方法时void IMyInterface.MyMethod (...)
resharper将其视为私有方法,并希望将其更改为IMyInterface。*** m *** yMethod。 有没有办法忽略显式接口实现的命名约定?
答案 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(...)
没有辅助功能设置。实施将是公开的或内部的,取决于接口是公共的还是内部的。