글쎄, .NET Core 2.2에 대한 일종의 기본 솔루션이 있습니다.
아이디어는 <include>
태그 .
당신은 <GenerateDocumentationFile>true</GenerateDocumentationFile>
당신의.csproj
파일을 .
인터페이스가있을 수 있습니다.
namespace YourNamespace
{
/// <summary>
/// Represents interface for a type.
/// </summary>
public interface IType
{
/// <summary>
/// Executes an action in read access mode.
/// </summary>
void ExecuteAction();
}
}
그리고 그것으로부터 물려받은 것 :
using System;
namespace YourNamespace
{
/// <summary>
/// A type inherited from <see cref="IType"/> interface.
/// </summary>
public class InheritedType : IType
{
/// <include file='bin\Release\netstandard2.0\YourNamespace.xml' path='doc/members/member[@name="M:YourNamespace.IType.ExecuteAction()"]/*'/>
public void ExecuteAction() => Console.WriteLine("Action is executed.");
}
}
좋아, 약간 무섭지 만 예상되는 요소를 YourNamespace.xml
.
당신이 구축되면 Debug
구성을, 당신은 교환 할 수 있습니다 Release
에 대한 Debug
에서 file
의 속성 include
태그입니다.
참조 할 올바른 member
의 를 찾으 name
려면 생성 된 Documentation.xml
파일을여십시오.
또한이 접근 방식을 사용하려면 프로젝트 또는 솔루션을 최소한 두 번 빌드해야한다고 가정합니다 (처음에는 초기 XML 파일을 만들고 두 번째는 요소를 자체로 복사).
좋은 점은 Visual Studio가 복사 된 요소의 유효성을 검사하므로 인터페이스 / 기본 클래스 등 (예 : 인수 이름, 형식 매개 변수 이름 등)과 동기화 된 문서 및 코드를 유지하는 것이 훨씬 쉽다는 것입니다.
내 프로젝트에서 <inheritdoc/>
(DocFX 용) 및 <include/>
(NuGet 패키지 게시 및 Visual Studio에서 유효성 검사 용 ) 모두로 끝났습니다 .
/// <inheritdoc />
/// <include file='bin\Release\netstandard2.0\Platform.Threading.xml' path='doc/members/member[@name="M:Platform.Threading.Synchronization.ISynchronization.ExecuteReadOperation(System.Action)"]/*'/>
public void ExecuteReadOperation(Action action) => action();