2011-12-06 3 views
6

나는 다음과 같이 일반적인 예외 클래스가생성 된 제네릭 형식은

void Save() 
{ 
    throw new DuplicateException<SomeEntity>(); 
} 

이를 메서드는이 일반 예외를 throw 할 수 있지만이 중 하나만 구성된 형식 DuplicateException<SomeEntity>이고 SomeEntity 대신 다른 형식 매개 변수를 사용하여이 예외를 throw 할 수 없습니다.

이제 Save 메서드의 xml-comment에이 사실을 지정하고 싶습니다. This article은 일반적인 제외 방법을 언급하는 방법을 조금 설명하고 나는이 두 가지 대안 시도했다 : VS에서 자동 완성에 의해 defauly에 의해

1) 인서트 :

TEntity를 대체
/// <exception cref="DuplicateException{TEntity}" /> 

2) SomeEntity

/// <exception cref="DuplicateException{SomeEntity}" /> 

그러나 출력 XML은이 메서드가 일반 을 생성하지 않을 수도 있음을 나타내며 형식은를 언급하지 않습니다.전혀 :

<exception cref="T:MyNameSpace.DuplicateException`1" /> 
+0

제네릭 예외를 throw해야합니까? 그것의 유일한 사용은 특정 코드 조각이 잠재적으로 DuplicateException 과 DuplicateException 을 던질 수 있고 하나만 잡아서 다른 하나는 잡아 내지 않는 경우에 사용됩니다. –

+0

그렇다면 Save * 메소드에서 던져 질 수있는 단일 DuplicateException을 가지고 있지 않은 이유는 무엇입니까? 왜 그것이 일반적 일 필요가 있습니까? –

+0

강하게 입력하면 실제로 많은 도움이되지 않습니다. 예, 저장중인 객체에 강력하게 형식화 된 속성을 가질 수 있습니다. 그러나 그 강하게 타자를 치는 재산으로 무엇을 할 것입니까? 나는 당신이 여기서 비 제네릭 예외로 더 나아질 것이라고 생각합니다. –

답변

3

cref 속성의 목적은 유형에 대한 문서에 링크하는 것입니다. 그러나 구체적인 제네릭 형식에 대한 설명서가 없으므로 생성 된 cref 특성이 제네릭 형식 정의를위한 것임은 놀라운 일이 아닙니다. 링크에있는 내용과 다른 내용을 표시하려는 것이 걱정입니다. 요소의 내용이 링크의 텍스트이기 때문에 요소를 사용할 때 그렇게 할 수 있습니다. 그러나 요소에서 요소의 내용은 예외가 발생한시기에 대한 설명입니다. 그래서 나는 당신이 찾고있는 것을 할 방법이 있다고 생각하지 않습니다.