2009-09-16 2 views
1

나는 resharper를 좋아합니다.명시 적 인터페이스 방법에 대해 다른 resharper 명명 규칙을 사용하려면 어떻게해야합니까?

그러나, 나는 다음과 같은 문제가있다 : 개인 방법에 대한

내 이름 지정 규칙은 낙타입니다.

너무 좋습니다. 내가 ReSharper에서 개인 방법으로 처리하고 IMyInterface로 변경하고자하는

void IMyInterface.MyMethod (...) 

에로 명시 적 인터페이스 메소드를 구현하지만

. *** m *** yMethod. 명시 적 인터페이스 구현에 대한 명명 규칙을 무시할 수 있습니까?

+0

개인용 메서드와 명시 적 구현에 대한 동일한 규칙을 사용하면 5.0.1659.36 –

답변

-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()

은을 사용하여 인터페이스를 구현 할 방법이 없습니다 인터페이스와 다른 케이스 - 명시 적으로 또는 암시 적으로 정의되었는지 여부는 중요하지 않음 - 인터페이스는 케이스를 포함하여 메소드 이름을 결정합니다. 그것이 왜 공개, IMyInterface.testmethod의 명시 적 구현의 민간 방법이 아닙니다 -

나는 혼란으로 인해 당신이, 내 경우에는, testmethod개인이라고 가정하고 있다는 사실 것 같아요

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

인터페이스를 구현하는 메소드의 대소 문자는 변경할 수 없습니다.이 제한은 Resharper 제한이 아니라 .NET 제한입니다.

+0

에서 불평하지 않습니다.하지만 Resharper는이를 무시하고 암시 적으로 구현 된 메서드의 경우이를 개인 메서드로 취급하기 때문에 행복하게 변경됩니다. 나는 Resharper가 그것을하는 대신에 Resharper가 그것을하는 것을 방지하는 방법이 문제라고 생각한다. – dtb

+0

아, 그렇다면 수정자를 "개인"으로 남겨 두어야합니다. Resharper (지금 막 테스트 중)는 명시 적으로 구현 된 인터페이스의 경우를 변경하지 않을만큼 똑똑하다고 생각합니다. –

+0

호기심에 대한 이유가 downvote - 난 그냥 다시이, 지금, 그리고 resharper는 귀하의 규칙을 위반하는 명시 적으로 인터페이스를 구현하자 테스트. –

-1

인터페이스 메소드는 비공개로 설정할 수 없습니다.명시 적으로 인터페이스를 사용하는 경우 액세스 가능성 설정없이

void IMyInterface.MyMethod(...) 

을 사용하게됩니다. 구현은 인터페이스가 공개 또는 내부인지 여부에 따라 공개 또는 내부가됩니다.

0

는 ReSharper에서 일부 버전의 버그가 있었다, 그것은 오래 전에 수정되었습니다. 어떤 버전을 사용합니까? 4.5.1 또는 최신 유흥 중 하나와 같은 최신 빌드를 사용해 보셨습니까?

+0

resharper 4.5를 사용하고 있습니다. 너무 오래 되었습니까? –

관련 문제