Sdílet prostřednictvím


Zpracování souboru XML (C# programování Guide)

Kompilátor generuje řetězec ID pro jednotlivé konstrukce kódu tagovaný generovat dokumentaci.(Informace o kódu příznaku Doporučené značky pro dokumentaci komentáře.) Řetězec ID jednoznačně identifikuje konstruktu.Programy, které zpracování souboru XML lze určit odpovídající řetězec ID.NET Framework metadata/odraz položku dokumentace vztahující se k.

Soubor XML není Hierarchická reprezentace kódu; je plochý seznam Generovaný pro každý prvek.

Při vytváření řetězce ID, kompilátor dodržuje následující pravidla:

  • Žádné mezery je v řetězci.

  • První část řetězce ID identifikuje druh člena je označen formou jeden znak následovaný dvojtečkou.Se používají následující typy členů:

    Znak

    Description

    N

    obor názvů

    Nelze přidat komentáře k dokumentaci k oboru názvů, ale provedete cref odkazy, pokud je podporována.

    T

    Typ: třídy, rozhraní, struktura, enum, delegát

    F

    Pole

    P

    Vlastnosti (včetně indexování nebo jiných indexovaných vlastností)

    M

    metoda (včetně takové zvláštní metody jako konstruktory, operátory a tak dále)

    E

    Událost

    !

    chybový řetězec

    Zbytek řetězec obsahuje informace o chybě.C# kompilátor vygeneruje chybu informace pro odkazy, které nelze vyřešit.

  • Druhá část řetězce je plně kvalifikovaný název položky, počínaje kořen oboru názvů.Název zboží, jeho nadřazeného typu (typů) a oboru názvů jsou odděleny tečkami.Pokud je název položky samotné období, se nahrazují znak hash (#).Předpokládá se, že žádná položka má znak hash přímo v jeho název.Plně kvalifikovaný název řetězce konstruktoru by například "System.String.#ctor".

  • Vlastnosti a metody Pokud jsou argumenty metody, seznam argumentů, které jsou uvedeny v závorkách následuje.Pokud neexistují žádné argumenty, nejsou k dispozici žádné závorky.Argumenty jsou odděleny čárkami.Kódování každý argument přímo řídí, jak je kódován v.NET Framework podpis:

    • Základní typy.Běžné typy (ELEMENT_TYPE_CLASS nebo Typ ELEMENT_TYPE_VALUETYPE, který) jsou zobrazeny jako úplný název typu.

    • Vnitřních typů (například ELEMENT_TYPE_I4, ELEMENT_TYPE_OBJECT, ELEMENT_TYPE_STRING, ELEMENT_TYPE_TYPEDBYREF.a ELEMENT_TYPE_VOID) jsou znázorněny jako plně kvalifikovaný název odpovídajícího typu úplné.Například System.Int32 nebo System.TypedReference.

    • ELEMENT_TYPE_PTR je vyjádřena jako ' *' následující upravený typ.

    • Je vyjádřen typu ELEMENT_TYPE_BYREF '@' následující upravený typ.

    • ELEMENT_TYPE_PINNED je reprezentován jako "^" následující upravený typ.Kompilátor jazyka C# nikdy generuje to.

    • ELEMENT_TYPE_CMOD_REQ je reprezentován jako "|" a plně kvalifikovaný název třídy modifikátor následující upravený typ.Kompilátor jazyka C# nikdy generuje to.

    • ELEMENT_TYPE_CMOD_OPT je reprezentován jako "!" a plně kvalifikovaný název třídy modifikátor následující upravený typ.

    • ELEMENT_TYPE_SZARRAY je reprezentován ["] následující typ prvku matice.

    • ELEMENT_TYPE_GENERICARRAY je reprezentován jako "?" následující typ prvku matice.Kompilátor jazyka C# nikdy generuje to.

    • Je reprezentován ELEMENT_TYPE_ARRAY nekvantifikovaného:size,nekvantifikovaného:size kde počet čárek je pořadí - 1, a dolní meze a velikost každé dimenze-li známo, jsou zastoupeny v desítkové soustavě.Pokud není zadána dolní mez nebo velikost, jednoduše vynechat.Pokud jsou vynechány dolní mez a velikost pro konkrétní dimenzi, ":" je také vynechán.Dvojrozměrné pole s 1 jako dolní meze a neurčité velikosti je například [1:, 1:].

    • ELEMENT_TYPE_FNPTR je vyjádřena jako "= FUNC:type(podpis)", kde type je typ vrácení a podpis je argumenty metody.Pokud neexistují žádné argumenty, jsou závorky vynechat.Kompilátor jazyka C# nikdy generuje to.

    Protože nikdy slouží pro rozdílné přetížené metody nejsou zastoupeny následující součásti podpis:

    • konvence volání

    • vracet typ

    • TYP ELEMENT_TYPE_SENTINEL

  • Pro převod pouze (op_Implicit a op_Explicit), vrátí hodnotu, která metoda je kódovaný jako "~" následované návratový typ jako kódovaný výše.

  • Pro obecné typy název typu bude následovat zpět značek a číslo, které označuje počet parametrů obecného typu.Příklad:

    <member name="T:SampleClass`2">je označení pro typ, který je definován jako public class SampleClass<T, U>.

    Pro přijetí obecné typy jako parametry metody jsou uvedeny parametry obecný typ jako čísla také zpět značky (například 0, 1).Každé číslo představující pole od nuly zápis pro obecné parametry typu.

Příklady

Následující příklady ukazují, jak řetězce ID třídy a jeho členové nebudou vygenerovány:

namespace N
{
    /// <summary>
    /// Enter description here for class X. 
    /// ID string generated is "T:N.X". 
    /// </summary>
    public unsafe class X
    {
        /// <summary>
        /// Enter description here for the first constructor.
        /// ID string generated is "M:N.X.#ctor".
        /// </summary>
        public X() { }


        /// <summary>
        /// Enter description here for the second constructor.
        /// ID string generated is "M:N.X.#ctor(System.Int32)".
        /// </summary>
        /// <param name="i">Describe parameter.</param>
        public X(int i) { }


        /// <summary>
        /// Enter description here for field q.
        /// ID string generated is "F:N.X.q".
        /// </summary>
        public string q;


        /// <summary>
        /// Enter description for constant PI.
        /// ID string generated is "F:N.X.PI".
        /// </summary>
        public const double PI = 3.14;


        /// <summary>
        /// Enter description for method f.
        /// ID string generated is "M:N.X.f".
        /// </summary>
        /// <returns>Describe return value.</returns>
        public int f() { return 1; }


        /// <summary>
        /// Enter description for method bb.
        /// ID string generated is "M:N.X.bb(System.String,System.Int32@,System.Void*)".
        /// </summary>
        /// <param name="s">Describe parameter.</param>
        /// <param name="y">Describe parameter.</param>
        /// <param name="z">Describe parameter.</param>
        /// <returns>Describe return value.</returns>
        public int bb(string s, ref int y, void* z) { return 1; }


        /// <summary>
        /// Enter description for method gg.
        /// ID string generated is "M:N.X.gg(System.Int16[],System.Int32[0:,0:])". 
        /// </summary>
        /// <param name="array1">Describe parameter.</param>
        /// <param name="array">Describe parameter.</param>
        /// <returns>Describe return value.</returns>
        public int gg(short[] array1, int[,] array) { return 0; }


        /// <summary>
        /// Enter description for operator.
        /// ID string generated is "M:N.X.op_Addition(N.X,N.X)". 
        /// </summary>
        /// <param name="x">Describe parameter.</param>
        /// <param name="xx">Describe parameter.</param>
        /// <returns>Describe return value.</returns>
        public static X operator +(X x, X xx) { return x; }


        /// <summary>
        /// Enter description for property.
        /// ID string generated is "P:N.X.prop".
        /// </summary>
        public int prop { get { return 1; } set { } }


        /// <summary>
        /// Enter description for event.
        /// ID string generated is "E:N.X.d".
        /// </summary>
        public event D d;


        /// <summary>
        /// Enter description for property.
        /// ID string generated is "P:N.X.Item(System.String)".
        /// </summary>
        /// <param name="s">Describe parameter.</param>
        /// <returns></returns>
        public int this[string s] { get { return 1; } }


        /// <summary>
        /// Enter description for class Nested.
        /// ID string generated is "T:N.X.Nested".
        /// </summary>
        public class Nested { }


        /// <summary>
        /// Enter description for delegate.
        /// ID string generated is "T:N.X.D". 
        /// </summary>
        /// <param name="i">Describe parameter.</param>
        public delegate void D(int i);


        /// <summary>
        /// Enter description for operator.
        /// ID string generated is "M:N.X.op_Explicit(N.X)~System.Int32".
        /// </summary>
        /// <param name="x">Describe parameter.</param>
        /// <returns>Describe return value.</returns>
        public static explicit operator int(X x) { return 1; }

    }
}

Viz také

Referenční dokumentace

/doc (Možnosti C# kompilátoru)

Komentáře XML dokumentace (Příručka programování C#)

Koncepty

Příručka programování C#