2012-03-27 3 views
1

현재 웹 서비스에 액세스하기 위해 SDK를 다시 작성하고 있습니다.두 인터페이스 변형 C# 코드 설명서의 DRY

데이터베이스 쿼리의 모델은 많은 클래스 (실제로는 약 20 개의 가능한 필터 각각에 대해 하나의 클래스)로 구성되기 때문에 유창한 인터페이스를 추가로 제공하기로 결정했습니다.

그래서 그 대신

new Query(
Age = new AgeFilter() { From = 18, To = 65 }, 
Location = new PostalCodeFilter() { Zip = 12345, new RadiusDefinition() { ... } } 
); 

의 사용자는 이제 쓸 수 있습니다 :

Query.Create() 
    .WithAge(18, 65) 
    .WithLocation(12345, 50, "miles"); 

는 이제 기존의 방법 (I 내부로 실제 개체를 숨길 수 없습니다뿐만 아니라 포함되어야한다는 것을 발견).

유창한 인터페이스 매개 변수와 데이터 클래스 필드를 모두 문서화하지 않으려면 어떻게해야합니까? 설명은 동일합니다. see/seealso에 대해 생각했지만 Visual Studio의 코드 도우미에는 표시되지 않습니다.

답변

1

당신은 그냥이 같은 <inheritdoc /> 태그를 사용할 수 있습니다 :

///<param name="from"> 
///<inheritdoc cref="AgeFilter.From" select="/summary/node()" /> 
///</param> 

또는

///<summary> 
///<inheritdoc cref="QueryFilters.WithAge" select="/param[@name='from']/node()"/> 
///</summary> 
+0

문서 처리 과정에서 SandCastle을 사용할 수 있는지 여부는 알 수 없지만 이것이 내가 원하는 것입니다. 감사! – Tarnschaf

1

나는 그렇게 생각하지 않습니다. xml-doc 주석은 매우 특정한 것에 적용되며 쉽게 "공유"되지 않습니다. 그러나 <see> 태그를 사용하여 요소간에 "링크"할 수 있습니다. http://msdn.microsoft.com/en-us/library/acd0tfbe.aspx을보고 사용 방법을 확인하십시오.

DRY는 주로 코드에 주로 적용됩니다. 동일한 코드 행을 두 번 쓰는 것은 해당 코드에 내재 된 로직을 변경해야한다면이를 두 번 만들어야한다는 것을 의미합니다. 반복을 피하려고하는 것은 마크 업입니다. 마크 업은 여러 위치에서 변경해야하는 것과 동일한 고유 한 문제가있을 수 있지만 마크 업에는 일반적으로 비슷한 것을 다시 작성하는 것을 피할 수있는 도구가 거의 없습니다. 비슷한 목적을 달성하는 데 여러 가지 방법이있는 다른 라이브러리를 살펴보면 많은 문서가 복사 붙여 넣기로 표시된다는 것을 알 수 있습니다. 당신이 샌드캐슬를 사용하는 경우

+0

덕분에 빠른 응답. see 태그를 알고 내 질문에 실제로 포함 시켰지만 SO는 HTML 태그 마크 안에 표시하지 않았습니다. 사실, 나는 너의 의견을 두 번 내지 않는다. 언급 한 DRY에 대한 이유는 문서에도 적용됩니다. SDK는 다양한 언어로 제공됩니다. 문서의 변경으로 이상적으로 다른 언어를 변경해야하는 것은 아닙니다. – Tarnschaf