Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
.NET API belgeleri için nihai hedef, /// .NET kaynak kodundaki XML açıklamalarının "gerçeğin kaynağı" olmasını sağlamaktır. MSBuild, ASP.NET Core ve EF Core için bu hedef karşılanmıştır. Ancak dotnet-api-docs deposu şu anda .NET API başvurusundaki bazı ad alanlarının gerçek kaynağı olmaya devam etmektedir.
Bu dotnet/runtime sorunu , .NET belgelerini geri aktarma çabasını izler ve dotnet/runtime deposunu gerçeğin kaynağı haline getirir. Sayfadaki "düzenle" düğmesinin varlığı veya yokluğu genellikle deponun doğru bilginin dotnet-api-docs kaynağı olduğunu gösterir. Eksikse, gerçeğin kaynağı büyük olasılıkla /// kaynak depodaki yorumlardır.
Bu makalede , kaynak kodun kendi içinde iyi belge açıklamaları yazma hakkında ipuçları sağlanır.
İyi yorumlar, iyi belgeler oluşturur
.NET API üç çizgili yorumlar, learn.microsoft.com üzerinde herkese açık belgelere dönüştürülür ve ayrıca IDE'deki IntelliSense içinde görünür. Açıklamalar şu şekilde olmalıdır:
- Tamamlandı: Yöntemler, parametreler, özel durumlar vb. için boş belge girdileri, API'lerin yetersiz desteklendiği, geçici veya önemsiz olduğunu hissettirir.
- Doğru: Okuyucular kritik ayrıntıları tarar ve önemli bilgiler eksik veya yanlış olduğunda hayal kırıklığına uğrar.
- Bağlamsal— okuyucular aramadan bu sayfaya iner ve API'nin nasıl ve ne zaman kullanılacağını ve kodun etkilerini öğrenmeleri gerekir.
- Özenli—zayıf veya aceleci dil bilgisi ve yazım denetimi okuyucunun kafasının karışmasına neden olabilir ve hatta basit mesajları bile belirsiz hale getirir; ayrıca, kötü sunum düşük yatırımı ifade eder.
En iyi yöntemler
Başka bir türe veya yönteme bağlanmak için yerine
crefkullanınhref.Doğru:
<param name="configFile">An <see cref="XmlConfigResource" /> object.</param>Yanlış:
<param name="configFile">An <a href="https://learn.Microsoft.com/{path}/XmlConfigResource"></a> object.</param>Parametrelere başvururken, parametre adını bir
<paramref>etiketinde sarmalayın, örneğin,The offset in <paramref name="source" /> where the range begins..Belge açıklamasında birden fazla paragraf varsa, paragrafları etiketlerle
<para>ayırın.Kod örneklerini
<code>etiketleri içindeki<example>etiketlerine sarmalayın.Otomatik oluşturulan "Ayrıca Bkz. " bölümünde diğer API'lere bağlantılar eklemek için kullanın
<seealso>.
XML belge etiketleri
| Etiket | Amaç | Örnek |
|---|---|---|
<altmember> |
Belirtilen API'ye "Ayrıca bkz. " bağlantısı ekler. | <altmember cref="System.Console.Out" /> |
<c> |
Belirtilen metni bir açıklama içinde kod olarak biçimlendirin. | Gets the current version of the language compiler, in the form <c>Major.Minor.Revision.Build</c>. |
<code> |
Birden çok satırı kod olarak biçimlendirin. | <code language="csharp">using(logger.BeginScope("Processing request from {Address}", address)) { }</code> |
<example> |
"Örnek" H2 başlığının altına bir kod örneği ekler. | <example><code language="csharp">using(logger.BeginScope("Processing request from {Address}", address)) { }</code></example> |
<exception> |
API'nin oluşturabileceği özel durumu açıklar. | <exception cref="T:System.ArgumentException">No application identity is specified in <paramref name="identity" />.</exception> |
<include> |
Kaynak kodunuzdaki API'leri açıklayan başka bir dosyadaki açıklamalara bakın. | <include file="../docs/AbsoluteLayout.xml" path="Type[@FullName='Microsoft.Maui.Controls.AbsoluteLayout']/Docs/*" />.NET MAUI örneği |
<inheritdoc> |
Xml açıklamalarını temel sınıflardan, arabirimlerden ve benzer yöntemlerden devralın. | <inheritdoc /> |
<list> |
Madde işaretli ya da numaralandırılmış liste oluşturur. | <list type="bullet"><item><description>Set the root path to the result.</description></item><item><description>Load host configuration.</description></item></list> |
<para> |
Paragrafları ayırır. | |
<paramref> |
Bir yöntem parametresine başvurur. | Returns the activity with the specified <paramref name="id" />. |
<related> |
Belirtilen makaleye "Ayrıca bkz. " bağlantısı ekler. | <related type="Article" href="/dotnet/framework/ado-net-overview">ADO.NET overview</related> |
<see cref> |
Başka bir API'ye bağlantılar. | Describes the behavior that caused a <see cref="Scroll" /> event. |
<see langword> |
Belirtilen metni kod olarak biçimlendirer. | Gets the value of the <see langword="Accept-Ranges" /> header for an HTTP response. |
<seealso> |
Belirtilen API'ye "Ayrıca bkz. " bağlantısı ekler. | <seealso cref="T:System.Single" /> |
<typeparamref> |
Tür parametresine başvurur. | The <typeparamref name="THandler" /> is resolved from a scoped service provider. |
Daha fazla bilgi için bkz. C# için önerilen XML etiketleri ve C# belirtimi. ECMAXML belirtimi de iyi bilgilere sahiptir, ancak ECMAXML ile /// belge açıklamaları arasında bazı farklar olduğunu unutmayın (örneğin, cref hedefleri tamamen genişletilmiştir ve ECMAXML'de ön eklere sahiptir).
Çapraz referanslar
Başka bir API'ye bağlanmak için etiket <see cref> kullandığınızda, tür veya yöntem gibi T:M: tür adına bir ön ek eklemeniz gerekmez. Aslında, kod çözümleme kuralı CA1200 , bir etiketteki cref tür adına ön ek ekleyen kod açıklamalarını işaretler. Ancak, bu kuralın birkaç özel durumu vardır:
- Birden fazla aşırı yükleme içeren bir yöntemin genel biçimine bağlanmak istediğinizde, C# derleyicisi şu anda bunu desteklemez. Belgeler için geçici çözüm, kaynak kodunda (veya
O:ECMAXML'de) yöntem adını önek olarakOverload:eklemek ve CA1200 kuralını engellemektir. Örneğin:<altmember cref="O:System.Diagnostics.Process.Kill" />. - API geçerli bağlamdan çözümlenemediyse( herhangi bir
usingyönerge içerir). Bu durumda, bir ön ek ile tam API adını kullanın.
<see cref> Etiket ECMAXML'ye dönüştürüldüğünde, mdoc tür adını bir ön ek içeren API'nin tam DocId değeriyle değiştirir.
Açıklamalar
Her sembol türünü ve çeşitli bölümlerini açıklama hakkında yetkili yönergeler için .NET API belgeleri wiki'sine bakın.
Boş açıklamalar
Boş açıklamalar için bilinen yer tutucu metin To be added. olarak bilinir. Learn derleme sistemi bu metni tanır ve ECMAXML HTML'ye dönüştürüldüğünde boş bir açıklama bırakarak kaldırır.
Kod dosyalarını ayırma
Kod örneğiniz uzunsa, bunu docs deposundaki ayrı bir dosyaya koyabilir ve kaynak koddan aşağıdaki şekilde bağlayabilirsiniz:
/// <example>
/// <format type="text/markdown">
/// <]
/// ]]></format>
/// </example>
Ayrı kod dosyalarını bağlama hakkında daha fazla ayrıntı için bu tartışmaya bakın.
Dil öznitelikleri
Etiketlerdeki <code> dil öznitelikleri isteğe bağlıdır, ancak kodun renk kodlamasıyla biçimlendirilmesine neden olur. Örneğin:
/// <example>
/// This sample shows the basic pattern for defining a typed client class.
/// <code language="csharp">
/// class ExampleClient
/// {
/// private readonly HttpClient _httpClient;
/// private readonly ILogger _logger;
///
/// // Typed clients can use constructor injection to access additional services.
/// public ExampleClient(HttpClient httpClient, ILogger<ExampleClient> logger)
/// {
/// _httpClient = httpClient;
/// _logger = logger;
/// }
/// }
/// </code>
/// </example>
İç API'ler
Tüketiciler tarafından kullanılması amaçlanmamış bir API'yi belgelerken aşağıdakine benzer bir ifade kullanın:
<summary>This type supports the .NET infrastructure and is not intended to be used directly from your code.</summary>