2010-08-06 2 views
2

에서 상속 한 코드베이스를 정리하는 작업에서 stylecop 및 fxcop을 통해 상속되고 fxcop의 경고 중 하나가 CA1801입니다. Parameter ' value '는 Something.MyProperty.set (string)이 사용되지 않습니다. 매개 변수를 제거하거나 메서드 본문에 사용하십시오. 이 불평FXCop 경고 CA1801 : 재정의 된 상속 된 supressed 속성

코드는 약 :

public class Something : ISomeInterface 
    public new string MyProperty 
    { 
     get 
     { 
      throw new InvalidOperationException("MyProperty is not implemented."); 
     } 

     set 
     { 
      throw new InvalidOperationException("MyProperty is not implemented."); 
     } 
    } 

파생 클래스에서이 속성은 인터페이스에 정의되어 있지만,이 경우에는 필요하지 않은 -을 제외하고 대신 NotImplementedException의 경우 InvalidOperationException의 약간 의심 사용으로, FXCop에서 경고를 제외해야하는 이유를 설명하는 메모와 함께 나는 궁금합니다.

이 모범 사례를 두 번째 인터페이스로 리팩터링하는 것 외에 FXCop에서 경고를 방지하기 위해 모범 사례와 관련하여 내가 할 수있는 일이 무엇인지 알지 못합니다. 그런 다음이를 사용하는 다른 모든 클래스를 업데이트하십시오 인터페이스? 나는 내 자신의 질문에 방금 대답했을 것 같아요? : D

+0

사실,이 경우에 사용해야하는 것은 NotSupportedException입니다. NotImplementedException는 개발자가 아직 메소드에 대한 코드를 완료하지 않았 음을 알리기위한 것입니다. 자세한 내용은 http://blogs.msdn.com/b/brada/archive/2004/07/29/201354.aspx를 참조하십시오. –

+0

네, 거기에 맞습니다. 고마워요! –

답변

2

나는이 경고를 받는다는 "새"키워드 때문이라고 생각합니다. 으로 바꾸고 새 을 제거한 다음 무시하고 경고가 사라지는 지 확인하십시오.

그렇다면 InvalidOperationException 대신 NotImplementedException을 사용하는 것이 좋습니다.

+0

사실, 그것을 바꾸기 위해 그것을 바꾸는 것이 그것을 해결하는 것 같았지만 완전히 이해하지는 못했습니다! : D –

+0

또한 기본 속성을 재정의 할 수 있도록 가상 속성을 정의해야했습니다. –

+0

@Andrew, Ahh .. 미안해. 나는 이것을 놓쳤다. 인터페이스이므로 새로운 것을 제거 할 수 있습니다. New는 다른 메소드 서명을 작성하고 인터페이스를 구현하지 않습니다. –