2011-01-31 4 views
0

나는 인덱서를 가지고, 그것이 null가 아닌 경우 확인하려면, 그것은 다음 경우 ArgumentNullException을 던져 경우, 그러나 헌병 경고를경우 ArgumentNullException, 인덱서 및 헌병 규칙 오류

InstantiateArgumentExceptionCorrectlyRule을 설정 :이 방법은 경우 ArgumentException을 던졌습니다 기존 매개 변수 이름을 지정하지 않고 예외 (또는 파생 된)를 가져올 수 있습니다. 이것은 개발자에게 유용한 정보를 숨길 수 있습니다. 예외 매개 변수를 수정하여 올바른 매개 변수 이름을 사용하거나 매개 변수의 순서가 올바른지 확인하십시오.

public override LocalizedString this[string key] 
{ 
    get 
    { 
     if (key == null) 
     { 
      throw new ArgumentNullException("key"); 
     } 
     return base[key]; 
    } 
    set 
    { 
     if (key == null || value == null) 
     { 
      throw new ArgumentNullException("key"); 
     } 
     base[key] = value; 
    } 
} 

인덱서를 어떻게 수정합니까?

답변

6

글쎄, 지금은 분명하지 않습니다. 이것 좀 봐 :

if (key == null || value == null) 
{ 
    throw new ArgumentNullException("key"); 
} 

을이 "키"를 주장 예외를 throw 실제로 "값"해야 할 때 null의 의미 그.

그래서 코드는 다음과 같아야합니다

if (key == null) 
{ 
    throw new ArgumentNullException("key"); 
} 
if (value == null) 
{ 
    throw new ArgumentNullException("value"); 
} 

나는 그 경고 또는하지를 해결할지 모르겠지만, 올바른 코드가 될 것입니다.

This bug report 이것은 Gendarme의 버그로, 아직 수정되지 않았 음을 나타냅니다. 해당 인덱서에 대한 경고를 명시 적으로 해제 할 수 있다면 가장 좋은 방법 일 것입니다. (저는 Gendarme을 사용하지 않았기 때문에 실현 가능한지 여부는 알 수 없지만 조사 할 가치가 있습니다.)