2010-06-07 4 views
1

다음과 같은 상황에서 컴파일러 경고를받는 이유에 대해 궁금합니다. "에 XML 주석 'B.MethodB은() 확인할 수 없습니다'MethodA '속성을 CREF있다."C# XML 문서 컴파일러 경고

/// <summary>This is class A 
/// </summary> 
public class A 
{ 
    /// <summary>This is the documentation for Method A 
    /// </summary> 
    public void MethodA() 
    { 
     //Do something 
    } 
} 

/// <summary>This is class B 
/// </summary> 
public class B : A 
{ 
    /// <summary>This does something that I want to 
    /// reference <see cref="MethodA"/> 
    /// </summary> 
    public void MethodB() 
    { 
     //Do something 
    } 

} 

경고 상태에 있음 B가 A에서 상속받은 경우 컴파일러에서 상위 클래스를 지정하지 않고 문서를 생성 할 때 컴파일러가 해당 메서드를 볼 수 없습니까? 만약 내가 cref를 cref="A.MethodA()"으로 바꾸면 잘 작동하지만, 불필요한 것처럼 보이고, 특히 하나 이상의 레벨을 올라야 할 때 고통 스럽습니다.

테스트를 진행하는 모든 사람에게 메모로 "속성 -> 빌드"에서 "XML 문서 파일"을 선택하여 경고를 확인해야합니다.

답변

2

B가 A에서 상속 한 경우 cref에서 상위 클래스를 지정하지 않고 문서를 생성 할 때 컴파일러가 해당 메서드를 볼 수 없습니까?

그렇게 생각할 수도 있지만 그렇지 않습니다. XMLDoc 구문 분석기는 메서드를 속한 클래스의 올바른 범위에 넣기위한 자격이 필요합니다. 메서드가 같은 클래스의 일부인 경우 (예 : 기본 클래스에서 파생되지 않은 경우) 자격없이 수행 할 수 있습니다. 그렇지 않으면 필요합니다.

+0

자격이 필요하고 트리 자체를 찾을 수없는 이유가 있습니까? –

+0

@Craig : 메서드 호출처럼 보지 마세요. 오히려 특정 문서 페이지에 대한 링크입니다. 클래스 A의 문서 페이지에'MethodA'가 문서화되어 있기 때문에 참조가 필요합니다. 실제 코드처럼 문서가 실제로 "컴파일"되지 않았습니다. 문서는 상속되지 않습니다. – chiccodoro