mdoc(5) File Formats Manual mdoc(5)

mdoc - قالب XML مستندسازی مونو (Mono)

برنامه‌های مختلف مستندسازی مونو (Mono) فایل‌های XML منطبق بر طرحواره (schema) مستندسازی مونو را تولید کرده یا تغییر می‌دهند:

ایجاد یا به‌روزرسانی XML مستندسازی مونو برای مجموعه‌ای از اسمبلی‌ها (assemblies).
اعتبارسنجی XML مستندسازی مونو در برابر طرحواره XML مستندسازی مونو.
تبدیل XML مستندسازی مونو درون یک ساختار دایرکتوری به مجموعه‌ای از فایل‌ها جهت استفاده با monodoc(1).
تبدیل XML مستندسازی مونو درون یک ساختار دایرکتوری به مجموعه‌ای از فایل‌های HTML قابل مشاهده با یک مرورگر وب.

همه این ابزارها (و ابزارهای دیگر) از طرحواره مشترک XML شرح داده‌شده در این صفحه راهنما استفاده می‌کنند.

سه مجموعه از فایل‌های XML مستندسازی مونو وجود دارد:

*
index.xml: شامل فهرستی از تمام اسمبلی‌های موجود در دایرکتوری دربرگیرنده، و تمامی نوع‌ها (types) و فضاهای نام (namespaces) درون آن اسمبلی‌ها است.
*
ns-*.xml: به ازای هر فضای نام درون اسمبلی یک فایل ns-*.xml وجود دارد؛ این فایل‌ها هم‌سطح (sibling) با index.xml هستند.

مثال‌هایی از فایل‌های ns-*.xml شامل: ns-System.xml، ns-System.Collections.xml و ns-.xml (برای فضای نام ریشه، هرچند توصیه می‌شود نوع‌ها را در فضای نام ریشه قرار ندهید، زیرا monodoc(1) آن‌ها را نمایش نمی‌دهد).

فایل‌های ns-*.xml شامل مستندات به ازای هر فضای نام هستند.

*
NamespaceName/TypeName.xml: این فایل‌ها درون یک دایرکتوری نقطه‌دار NamespaceName قرار دارند و TypeName نام نوع (type) است.

مثال‌ها شامل: RootType.xml (اگر نوع فاقد فضای نام باشد)، System/String.xml، System.Collections/IEnumerable.xml و System.Collections.Generic/List`1+Enumerator.xml (بخش `1 تعداد پارامترهای نوع جنریک پذیرفته‌شده توسط نوع است، و هرآنچه پس از + می‌آید یک نوع تودرتو یا nested type است).

بنابراین، محتویات معمول یک دایرکتوری مشابه زیر خواهد بود:

index.xml
ns-System.xml
ns-System.Collections.Generic.xml
System/String.xml
System.Collections.Generic/List`1.xml

فایل index.xml شامل فهرستی از اسمبلی‌های قرارگرفته زیر دایرکتوری حاوی index.xml و تمامی فضاهای نام و نوع‌های درون آن اسمبلی‌ها است. ساختار آن شبیه به این است:

<Overview>
  <Assemblies>
    <Assembly Name="mscorlib" Version="2.0.0.0" />
    <!-- other <Assembly/> elements... -->
  </Assemblies>
  <Remarks>To be added.</Remarks>
  <Copyright>To be added.</Copyright>
  <Types>
    <Namespace Name="System">
      <Type Name="String" />
      <!-- Other <Type/> elements -->
    </Namespace>
    <Namespace Name="System.Collections.Generic">
      <Type Name="List`1" DisplayName="List&lt;T&gt;" />
      <!-- Other <Type/> elements -->
    </Namespace>
    <!-- other <Namespace/> elements -->
  </Types>
  <Title>DocTest</Title>
</Overview>

بیشتر این بخش به‌طور خودکار نگهداری می‌شود، به‌ویژه عناصر /Overview/Assemblies و /Overview/Types .

ویژگی (attribute) //Namespace/@Name مربوط به دایرکتوری‌ای است که حاوی فایل‌هایی با نام //Type/@Name.xml است، در حالی که ویژگی //Type/@DisplayName شامل نام نوع #C است (اگر //Type/@DisplayName یافت نشود، //Type/@Name به عنوان نام نمایشی استفاده می‌شود). همچنین باید یک فایل ns-[//Namespace/@Name].xml وجود داشته باشد.

سه عنصر مورد توجه نویسندگان وجود دارد: /Overview/Remarks، /Overview/Copyright و /Overview/Title، که شامل مستندات در سطح اسمبلی هستند. این عناصر می‌توانند شامل هر یک از عناصر XML زیر باشند (که در بخش عناصر مستندسازی XML شرح داده شده‌اند): block، code، example، list، para، paramref، typeparamref، see و ul.

فایل‌های ns-*.xml شامل مستندات فضای نام هستند:

<Namespace Name="System">
  <Docs>
    <summary>To be added.</summary>
    <remarks>To be added.</remarks>
  </Docs>
</Namespace>

عناصر /Namespace/Docs/summary و /Namespace/Docs/remarks باید شامل مستندات فضای نام باشند.

عناصر remarks و summary در بخش عناصر مستندسازی XML مستند شده‌اند.

قالب مستندسازی مونو مشابه قالب مستندسازی Ecma است، همان‌طور که در ویرایش سوم ECMA-335، بخش IV، فصل ۷ توصیف شده است. تفاوت اصلی با قالب ECMA این است که هر نوع فایل اختصاصی خود را درون دایرکتوری همنام با فضای نام نوع دریافت می‌کند. اطلاعات زیادی وجود دارد که به‌طور خودکار توسط mdoc(1) نگهداری می‌شود؛ بیشتر اطلاعات درون مستندات نباید ویرایش شوند. این شامل نام نوع (/Type/@FullName)، رابط‌های پیاده‌سازی‌شده (/Type/Interfaces)، اطلاعات عضو (/Type/Members/Member/@MemberName، /Type/Members/Member/MemberSignature، /Type/Members/Member/MemberType، /Type/Members/Member/Parameters و غیره) می‌شود.

<Type Name="DocAttribute" FullName="Mono.DocTest.DocAttribute">
  <TypeSignature Language="C#" Value="public class DocAttribute : Attribute" />
  <AssemblyInfo>
    <AssemblyName>DocTest</AssemblyName>
    <AssemblyVersion>0.0.0.0</AssemblyVersion>
  </AssemblyInfo>
  <Base>
    <BaseTypeName>System.Attribute</BaseTypeName>
  </Base>
  <Interfaces />
  <Attributes>
    <Attribute>
      <AttributeName>System.AttributeUsage(System.AttributeTargets.All)</AttributeName>
    </Attribute>
  </Attributes>
  <Docs>
    <summary>To be added.</summary>
    <remarks>To be added.</remarks>
  </Docs>
  <Members>
    <Member MemberName=".ctor">
      <MemberSignature Language="C#" Value="public DocAttribute (string docs);" />
      <MemberType>Constructor</MemberType>
      <AssemblyInfo>
        <AssemblyVersion>0.0.0.0</AssemblyVersion>
      </AssemblyInfo>
      <Parameters>
        <Parameter Name="docs" Type="System.String" />
      </Parameters>
      <Docs>
        <param name="docs">To be added.</param>
        <summary>To be added.</summary>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
  </Members>
</Type>

تنها عناصری که معمولاً نیاز به ویرایش دارند، فرزندان عناصر //Docs هستند که معمولاً حاوی متن To be added. می‌باشند. عنصر /Type/Docs شامل مستندات در سطح نوع است، در حالی که عنصر /Type/Members/Member/Docs شامل مستندات به ازای هر عضو است.

عناصر //Docs می‌توانند شامل عناصر زیر باشند: altcompliant، altmember، example، exception، param، permission، remarks، returns، since، summary، threadsafe، typeparam و value.

نوع‌های تودرتو عضو نیستند؛ آن‌ها نوع هستند و در فایل اختصاصی خود مستند می‌شوند. در نتیجه، فایل‌های NamespaceName/TypeName.xml بازگشتی نیستند؛ شما یک عنصر <Type/> را درون یک عنصر <Type/> دیگر ذخیره نمی‌کنید.

محتوای عنصر Docs از نظر معنایی و ساختاری دقیقاً یکسان با قالب مستندسازی درون‌خطی #C است، که متشکل از این عناصر است (فهرست‌شده در ویرایش سوم ECMA-334، پیوست E، بخش ۲). موارد زیر در توضیحات عناصر به کار رفته‌اند:

به یک ارجاع کلاس (یا عضو) اشاره دارد، و رشته‌ای در قالبی است که در ادامه در بخش قالب CREF شرح داده شده است.
متن غیر XML، و XML نباید به صورت تودرتو درون آن قرار گیرد.
تنها عناصر XML باید تودرتو شوند (که ممکن است به‌طور غیرمستقیم حاوی متن باشند)، اما متن غیر فاصله‌خالی نباید یک گره فرزند مستقیم باشد.
متن آزاد و XML، به طوری که سایر عناصر XML ممکن است درون آن تودرتو شوند.

عناصر زیر در مستندسازی استفاده می‌شوند:

<altmember cref="CREF" />
<altmember/> یک عنصر سطح بالا است و باید مستقیماً زیر عنصر <Docs/> قرار گیرد.

امکان تولید یک مدخل برای بخش See Also (همچنین ببینید) را فراهم می‌کند. از <see/> برای تعیین پیوند از درون متن استفاده کنید.

<altmember cref="P:System.Exception.Message" />
<block subset="SUBSET" type="TYPE">XML_TEXT</block>
ایجاد یک بلوک متنی، از نظر مفهومی مشابه با یک پاراگراف، اما برای ایجاد بخش‌بندی در متن استفاده می‌شود. تا حدی، یک <block/> معادل تگ <h2/> در HTML است.

SUBSET همیشه باید مقدار "none" باشد.

TYPE عنوان و قالب‌بندی مورد استفاده را مشخص می‌کند. انواع شناخته‌شده عبارتند از:

behaviors بخشی با عنوان Operation (عملیات) ایجاد می‌کند.

note بخشی با عنوان Note: (نکته:) ایجاد می‌کند.

overrides بخشی با عنوان Note to Inheritors (نکته برای ارث‌برندگان) ایجاد می‌کند.

usage بخشی با عنوان Usage (کاربرد) ایجاد می‌کند.

عنصر block می‌تواند شامل عناصر زیر باشد: block، c، code، list، para، paramref، see، subscript، sup و typeparamref.

<c>XML_TEXT</c>
تنظیم متن در قلمی شبیه به کد (مشابه عنصر <tt/> در HTML).

عنصر c می‌تواند شامل عناصر زیر باشد: code، para، paramref، see و typeparamref.

<code lang="LANGUAGE" src="SOURCE">TEXT</code>
نمایش چندین خط متن در قلمی شبیه به کد (مشابه عنصر <pre/> در HTML).

LANGUAGE زبانی است که این بلوک کد برای آن در نظر گرفته شده است. برای مثال، اگر LANGUAGE برابر با C# باشد، آنگاه TEXT در مرورگر مستندات مونو (Mono Documentation Browser) برجسته‌سازی نحوی مربوط به زبان #C را دریافت خواهد کرد.

SOURCE تنها توسط mdoc-update(1) تفسیر می‌شود. اگر هنگام اجرای mdoc-update(1) ویژگی src وجود داشته باشد، آنگاه SOURCE فایلی است (نسبت به دایرکتوری --out در mdoc-update(1)) که باید به عنوان مقدار TEXT درج شود. محتویات TEXT توسط mdoc-update(1) نادیده گرفته شده و در هر بار اجرا جایگزین می‌شود. همچنین SOURCE می‌تواند حاوی یک «لنگر» (anchor) باشد، مثلاً src="path/to/file.cs#RegionMarker". اگر یک لنگر وجود داشته باشد، و LANGUAGE برابر با C# باشد، آنگاه #region RegionMarker جستجو خواهد شد، و محتویات بین #region و #endregion بعدی به عنوان مقدار برای عنصر TEXT درج خواهد شد.

<example>XML_TEXT</example>
نشان‌دهنده مثالی است که باید به شکل ویژه‌ای نمایش داده شود. برای مثال:
<example>
  <para>An introductory paragraph.</para>
  <code lang="C#">
    class Example {
      public static void Main ()
      {
        System.Console.WriteLine ("Hello, World!");
      }
    }
  </code>
</example>

عنصر example می‌تواند شامل عناصر زیر باشد: c، code، list، para و see.

<exception cref="CREF">XML_TEXT</exception>
استثنایی (exception) را مشخص می‌کند که می‌تواند توسط عضو مستندشده پرتاب شود.

<exception/> یک عنصر سطح بالا است و باید مستقیماً زیر عنصر <Docs/> قرار گیرد.

CREF نوع استثنایی است که پرتاب می‌شود، در حالی که XML_TEXT شامل شرایطی است که باعث پرتاب CREF می‌شود.

<exception cref="T:System.ArgumentNullException">
  <paramref name="foo" /> was <see langword="null" />.
</exception>

عنصر exception می‌تواند شامل عناصر زیر باشد: block، para، paramref، see و typeparamref.

<format type="TYPE">XML_TEXT</format>
عنصر <format/> یک «راه فرار» برای گنجاندن محتوایی (احتمالاً XML) است که محتوای معتبر mdoc(5) به شمار نمی‌رود. این از نظر کارکردی معادل بلوک‌های =begin format در perlpod(1) است.

TYPE نوع MIME مربوط به XML_TEXT است. پردازنده‌های mdoc(5) در صورتی که از نوع استفاده‌شده پشتیبانی نکنند، ممکن است بلوک‌های <format/> را نادیده بگیرند.

برای مثال:

<format type="text/html">
  <table width="100%">
    <tr><td style="color:red">Hello, world!</td></tr>
  </table>
</format>

باعث می‌شود که عنصر تعبیه‌شده <table/> در HTML هنگام پردازش فایل توسط mdoc-export-html(1) به صورت درون‌خطی درون سند HTML حاصل درج شود. (به همین ترتیب، در صورت پردازش توسط برنامه‌ای دیگر ممکن است نادیده گرفته شود).

عنصر <format/> برای تسهیل وارد کردن مستندات از منابع موجود طراحی شده است. در صورت امکان، تا جای ممکن نباید به آن اتکا کرد.

<list>XML</list>
ایجاد یک فهرست یا جدول از موارد. <list/> از عناصر تودرتوی <item>XML</item>، <listheader>XML</listheader>، <term>XML_TEXT</term> و <description>XML_TEXT</description> استفاده می‌کند.

فهرست‌ها دارای ساختار نحوی زیر هستند:

<list type="bullet"> <!-- or type="number" -->
  <item><term>Bullet 1</term></item>
  <item><term>Bullet 2</term></item>
  <item><term>Bullet 3</term></item>
</list>

جدول‌ها دارای ساختار نحوی زیر هستند:

<list type="table">
  <listheader> <!-- listheader bolds this row -->
    <term>Column 1</term>
    <description>Column 2</description>
    <description>Column 3</description>
  </listheader>
  <item>
    <term>Item 1-A</term>
    <description>Item 1-B</description>
    <description>Item 1-C</description>
  </item>
  <item>
    <term>Item 2-A</term>
    <description>Item 2-B</description>
    <description>Item 2-C</description>
  </item>
</list>

عناصر item و description هر کدام می‌توانند شامل متن و عناصر زیر باشند: block، c، para، paramref، see، sup و typeparamref.

<para>XML_TEXT</para>
درج یک پاراگراف از XML_TEXT. برای مثال:
<para>
  This is a paragraph of text.
</para>

عنصر para می‌تواند شامل عناصر زیر باشد: block، c، example، link، list، onequarter، paramref، see، sub، sup، typeparamref و ul.

<param name="NAME">XML_TEXT</param>
<param/> یک عنصر سطح بالا است و باید مستقیماً زیر عنصر <Docs/> قرار گیرد.

پارامتر NAME مربوط به سازنده، متد یا ویژگی فعلی را توصیف می‌کند:

<param name="count">
  A <see cref="T:System.Int32" /> containing the number
  of widgets to process.
</param>

عنصر param می‌تواند شامل عناصر زیر باشد: block، c، example، para، paramref، see و typeparamref.

<paramref name="NAME" />
نشان می‌دهد که NAME یک پارامتر است.

این معمولاً NAME را به صورت متن مورب رندر می‌کند، بنابراین مکرراً (به شکل نامناسب) به عنوان معادل عنصر <i/> در HTML به کار می‌رود. برای مشاهده مثال به مستندات <exception/> (در بالا) مراجعه کنید.

<permission cref="CREF">XML_TEXT</permission>
الزامات دسترسی امنیتی عضو فعلی را مستند می‌کند.

<permission/> یک عنصر سطح بالا است و باید مستقیماً زیر عنصر <Docs/> قرار گیرد.

CREF یک ارجاع نوع به مجوز امنیتی مورد نیاز است، در حالی که XML_TEXT شرحی از چرایی نیاز به این مجوز است.

<permission cref="T:System.Security.Permissions.FileIOPermission">
  Requires permission for reading and writing files. See
  <see cref="F:System.Security.Permissions.FileIOPermissionAccess.Read" />,
  <see cref="F:System.Security.Permissions.FileIOPermissionAccess.Write" />.
</permission>

عنصر permission می‌تواند شامل عناصر زیر باشد: block، para، paramref، see و typeparamref.

<remarks>XML_TEXT</remarks>
شامل اطلاعات دقیق درباره یک عضو است.

<remarks/> یک عنصر سطح بالا است و باید مستقیماً زیر عنصر <Docs/> قرار گیرد.

<remarks>
  Insert detailed information here.
</remarks>

عنصر remarks می‌تواند شامل عناصر زیر باشد: block، c، code، example، list، para، paramref، see و typeparamref.

<returns>XML_TEXT</returns>

<returns/> یک عنصر سطح بالا است و باید مستقیماً زیر عنصر <Docs/> قرار گیرد.

مقدار بازگشتی یک متد را توصیف می‌کند:

<returns>
  A <see cref="T:System.Boolean" /> specifying whether
  or not the process can access
  <see cref="P:Mono.Unix.UnixFileSystemInfo.FullName" />.
</returns>

عنصر returns می‌تواند شامل عناصر زیر باشد: c، format، list، para، paramref، see و typeparamref.

<see cref="CREF" />, <see langword="LANGWORD" />
یک پیوند به عضو مشخص‌شده درون متن فعلی ایجاد می‌کند:
<see cref="M:Some.Namespace.With.Type.Method" />

یا مشخص می‌کند که LANGWORD یک کلیدواژه زبان است:

<see langword="null" />
<seealso cref="CREF" />
از seealso استفاده نکنید، از altmember استفاده کنید.
<since version="VERSION" />

<since/> یک عنصر سطح بالا است و باید مستقیماً زیر عنصر <Docs/> قرار گیرد.

امکان تعیین اینکه کدام نسخه نوع یا عضو مشخص‌شده را معرفی کرده است فراهم می‌کند.

<since version="Gtk# 2.4" />

این مورد عموماً لازم نیست، زیرا عناصر //AssemblyInfo/AssemblyVersion رهگیری می‌کنند که کدام نسخه‌های اسمبلی شامل نوع یا عضو هستند.

<summary>XML_TEXT</summary>

<summary/> یک عنصر سطح بالا است و باید مستقیماً زیر عنصر <Docs/> قرار گیرد.

یک مرور کلی (و کوتاه!) درباره یک نوع یا عضو نوع ارائه می‌دهد.

این معمولاً به عنوان بخشی از اعلان کلاس نمایش داده می‌شود و باید توصیفی به اندازه معقول کوتاه از نوع/عضو باشد. برای اطلاعات با جزئیات بیشتر از <remarks/> استفاده کنید.

عنصر summary می‌تواند شامل عناصر زیر باشد: block، list، para، paramref، see و typeparamref.

<typeparam name="NAME">XML_TEXT</typeparam>
<typeparam/> یک عنصر سطح بالا است و باید مستقیماً زیر عنصر <Docs/> قرار گیرد.

این مورد برای مستندسازی یک پارامتر نوع برای یک نوع جنریک یا متد جنریک استفاده می‌شود.

NAME نام پارامتر نوع است، در حالی که XML_TEXT شامل شرحی از پارامتر است (برای چه استفاده می‌شود، چه محدودیت‌هایی را باید برآورده کند و غیره).

<typeparam name="T">
  The type of the underlying collection
</typeparam>

عنصر typeparam می‌تواند شامل عناصر زیر باشد: block، c، para، paramref، see و typeparamref.

<typeparamref name="NAME">
برای نشان دادن اینکه NAME یک پارامتر نوع است استفاده می‌شود.
<value>XML_TEXT</value>
<value/> یک عنصر سطح بالا است و باید مستقیماً زیر عنصر <Docs/> قرار گیرد.

امکان توصیف یک ویژگی (property) را فراهم می‌کند.

<value>
  A <see cref="T:System.String" /> containing a widget name.
</value>

عنصر value می‌تواند شامل عناصر زیر باشد: block، c، example، list، para، paramref، see و typeparamref.

شناسه‌های رشته‌ای (CREFها) برای ارجاع به یک نوع یا عضو یک نوع استفاده می‌شوند. شناسه‌های رشته‌ای در ویرایش سوم ECMA-334، پیوست E.3.1 مستند شده‌اند. آن‌ها از یک پیشوند نوع عضو، نام کامل نوع (فضای نام + نام، جدا شده با .)، و احتمالاً به دنبال آن نام عضو و سایر اطلاعات تشکیل شده‌اند.

پیشوندهای نوع عضو:

این CREF به یک سازنده (constructor) اشاره دارد. فهرست پارامترها (اختیاری) درون پرانتز قرار می‌گیرد و پس از نام نوع می‌آید: C:System.String(System.Char,System.Int32).
این CREF به یک رویداد (event) اشاره دارد. نام رویداد پس از نام نوع می‌آید: E:System.AppDomain.AssemblyLoad.
این CREF به یک فیلد (field) اشاره دارد. نام فیلد پس از نام نوع می‌آید: F:System.Runtime.InteropServices.DllImportAttribute.SetLastError.
به یک سازنده یا متد اشاره دارد. سازنده‌ها ممکن است .ctor را به نام نوع ضمیمه کنند (به جای استفاده از قالب سازنده C: در بالا)، در حالی که متدها نام متد و تعداد (اختیاری) پارامترهای جنریک را ضمیمه می‌کنند. هم سازنده‌ها و هم متدها ممکن است فهرست پارامترهای متد را درون پرانتز ضمیمه کنند.

مثال‌ها: M:System.Object..ctor، M:System.String..ctor(System.Char[])، M:System.String.Concat(System.Object)، M:System.Array.Sort``1(``0[])، M:System.Collections.Generic.List`1..ctor، M:System.Collections.Generic.List`1.Add(`0).

به یک فضای نام اشاره دارد، مثلاً N:System.
به یک ویژگی (property) اشاره دارد. اگر ویژگی یک ایندکسر باشد یا پارامتر بپذیرد، انواع پارامتر به نام ویژگی ضمیمه شده و درون پرانتز قرار می‌گیرند: P:System.String.Length، P:System.String.Chars(System.Int32).
این CREF به یک نوع اشاره دارد، به همراه تعداد نوع‌های جنریک که ضمیمه شده است: T:System.String، T:System.Collections.Generic.List`1، T:System.Collections.Generic.List`1.Enumerator.

برای جالب‌تر شدن موضوع، نوع‌ها و اعضای جنریک دو نمایش دارند: نمایش «نامقید» (unbound) (نشان داده شده در مثال‌های بالا)، که در آن تعداد پارامترهای جنریک به نام کلاس‌ها ضمیمه می‌شود. همچنین یک نمایش «مقید» (bound) نیز وجود دارد که در آن قیدگذاری پارامترهای جنریک درون '{' و '}' یا '<' و '>' فهرست می‌شود. (استفاده از '<' و '>' کمتر رایج است، زیرا در یک سند XML باید از موجودیت‌های نویسه‌ای اسکیپ‌شده آن‌ها استفاده شود که منجر به '&lt;' و '&gt;' می‌گردد).

نامقید (Unbound):

*
T:System.Collections.Generic.List`1
*
T:System.Collections.Generic.Dictionary`2

مقید (Bound):

*
T:System.Collections.Generic.List{System.Int32}
*
T:System.Collections.Generic.List<System.Int32>
*
T:System.Collections.Generic.List&lt;System.Int32&gt;
*
T:System.Predicate{System.Action{System.String}}

همان‌طور که می‌بینید، گونه‌های مقید می‌توانند به صورت دلخواه پیچیده باشند (دقیقاً مانند جنریک‌ها).

علاوه بر این، اگر یک پارامتر جنریک به پارامتر جنریک یک نوع یا متد مقید شده باشد، «شاخص» (index) پارامتر جنریک آن نوع/متد به عنوان قید استفاده می‌شود، بنابراین با فرض

class FooType {
  public static void Foo<T> (System.Predicate<T> predicate)
  {
  }
}

شناسه CREF برای این متد M:FooType.Foo``1(System.Predicate{``0}) است که در آن ``0 شاخص صفرمین پارامتر جنریک است که به System.Predicate<T> مقید شده است.

mdoc(1)، monodocer(1)

برای جزئیات به نشانی http://lists.ximian.com/mailman/listinfo/mono-docs-list مراجعه کنید.

برای جزئیات به نشانی http://www.mono-project.com مراجعه کنید.