2010-08-19 7 views
3

나는 다음과 같은 코드가 있습니다 그러나의 FxCop 억제 경고 CA1800 (불필요한 캐스트)

[SuppressMessage("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")] 
private static void SetTestConnectionString(Component table) 
{ 
    if(table is Object1) 
    { 
     fn1((Object1)table); 
    } 
    // ... a few more if statements for different Classes 
} 

, 나는이 클래스를 통해 FxCop를 실행할 때/여전히 경고를

경고를 생성 기능 : CA1800를 : Microsoft.Performance : 매개 변수 인 'table'은 메서드 'xxx'에 여러 번 캐스팅되어 'ccc.SetTestConnectionString (Component)'메서드에 여러 번 캐스팅되었습니다. 여분의 캐스트 클래스 명령을 제거하기 위해 'as' 연산자 또는 직접 형 변환의 결과를 캐시하십시오.

나는이 코드를 리팩토링하여 경고를 제거 할 수 있지만 코드를 읽기 쉽게 만들 수 있음을 알고 있습니다. 이 인스턴스에서이 한 메시지에이 하나의 메시지를 표시하지 않으려합니다.

내가 뭘 잘못하고 있니?

+0

코드 샘플을 제공 할 수 있습니까? –

답변

0
private static void SetTestConnectionString(Component table) 
{ 
    if(table.GetType() == typeof(Object1)) 
    { 
     Object1 object1 = (Object1)table; 
     fn1(object1); 
    } 
    // ... a few more if statements for different Classes 
} 
+2

물론 클래스 계층 구조는 처리하지 않습니다. –

0

내가 프로젝트 파일이 DebugType은 아무도 없다 포함 의심 :

은 보라. DebugType을 none으로 설정하면 억제 코드가 감지되지 않습니다. 따라서 Suppression 코드를 제대로 감지하므로 DebugType을 전체로 변경할 수 있습니다.

<DebugType>full</DebugType>