Aracılığıyla paylaş


.Xml Dosyası İşleme

Derleyici kodunuzda belgelerini oluşturmak için etiketli her yapı için bir kimlik dizesi oluşturur.Daha fazla bilgi için bkz: Önerilen etiketler açıklamalardan.Kimlik dizesi yapı benzersiz olarak tanımlar..Xml dosyasını işleyen program kimliği dizesi uygulandığı belgelere karşılık gelen .NET Framework meta verileri veya yansıma maddeyi tanımlamak için kullanabilirsiniz.

.Xml dosyası kodunuzu hiyerarşik bir gösterimini değil, düz bir liste her öğe için oluşturulan bir Kimliğe sahip.

Derleyici kimliği dizesi oluştururken aşağıdaki kurallar gözlemliyorsa:

  • Beyaz boşluk dizesinde yerleştirilir.

  • Üste tek bir karakter ile tanımlanmasını üye tür kimliği dizesi ilk bölümünü tanımlar.Aşağıdaki üye türleri kullanılır:

    Karakter

    Tanımlama

    N

    ad alanı

    Açıklamalardan bir ad alanına ekleyemezsiniz, cref başvurular bir ad alanı için kullanılabilir.

    T

    türü: sınıf, arabirim, yapı, enum, temsilci

    D

    TypeDef

    F

    alan

    P

    (Dizin Oluşturucu veya diğer dizinlenmiş özellikler de dahil olmak üzere) özelliği

    M

    (Kurucular, işleçler ve diğerleri gibi özel yöntemler de dahil olmak üzere) yöntemi

    E

    Olay

    !

    hata dizesi

    Dize geri kalanı hata hakkında bilgi sağlar.Visual c++ derleyicisi hata bilgileri çözülemeyen bağlantılar oluşturur.

  • Dizenin ikinci bölümü maddesine ad alanının kök dizininde başlayan tam adıdır.Madde, kapsayan türü veya türleri ve ad alanı adı noktayla ayrılmış.Öğenin adını nokta varsa, bunlar karma-tarafından ('# ' işareti) değiştirilir.Hiçbir öğenin adını doğrudan bir karma işareti olduğunu kabul edilir.Örneğin, tam nitelikli adını String yapıcı "System.String.#ctor" olabilir.

  • Yöntem bağımsız değişkenleri, özellikleri ve yöntemleri, ayraç içinde değişken listesi izler.Hiçbir bağımsız değişken varsa, parantez içinde yok yok.Bağımsız değişkenleri virgüllerle ayrılır.Her bağımsız kodlama doğrudan bir .NET Framework İmzada nasıl kodlanır aşağıdadır:

    • Temel türler.Normal türleri (element_type_class veya element_type_valuetype), tam nitelikli tür adı olarak temsil edilir.

    • İç türleri (örneğin, ELEMENT_TYPE_I4, element_type_object, ELEMENT_TYPE_STRING, element_type_typedbyref.ve ELEMENT_TYPE_VOID) karşılık gelen tam tür adı tam olarak örneğin temsil System.Int32 veya System.TypedReference.

    • element_type_ptr şeklinde temsil bir ' *' değiştirilmiş türü aşağıdaki.

    • element_type_byref şeklinde temsil bir ' @' değiştirilmiş türü aşağıdaki.

    • ELEMENT_TYPE_PINNED şeklinde temsil bir ' ^' değiştirilmiş türü aşağıdaki.Visual c++ derleyicisi bu hiçbir zaman oluşturur.

    • element_type_cmod_req şeklinde temsil bir ' |' ve değiştirilmiş türü aşağıdaki değiştirici sınıfın tam nitelikli adı.Visual c++ derleyicisi bu hiçbir zaman oluşturur.

    • element_type_cmod_opt şeklinde temsil bir '!' ve değiştirilmiş türü aşağıdaki değiştirici sınıfın tam nitelikli adı.

    • element_type_szarray ["dizi öğesi türü aşağıdaki]" temsil edilir.

    • ELEMENT_TYPE_GENERICARRAY "[?]" gösterilen aşağıdaki dizi öğesi türü.Visual c++ derleyicisi bu hiçbir zaman oluşturur.

    • element_type_array şeklinde temsil lowerbound:size,lowerbound:size Burada sayıda virgül rank - 1, ve alt sınırları ve her boyutun büyüklüğü biliniyorsa, ondalık olarak temsil edilir.Bir alt sınır veya boyutu belirtilmezse, basitçe atlanır.Alt sınır ve belirli bir boyut için Boyut belirtilmezse, ':' de atlanır.Örneğin, alt sınır ve belirsiz boyutları olarak 1 ile 2 boyutlu bir dizi olan [1:, 1:].

    • element_type_fnptr şeklinde temsil "func =:type(İmza)", nerede type dönüş türü ve İmza yönteminin bağımsız olur.Hiçbir bağımsız değişken varsa, parantez göz ardı edilir.Visual c++ derleyicisi bu hiçbir zaman oluşturur.

    Hiçbir zaman için Farklılaştırıcı fazla yüklenmiş yöntemleri kullanılması nedeniyle imza aşağıdaki bileşenleri temsil edilmeyen:

    • çağırma kuralı

    • dönüş türü

    • ELEMENT_TYPE_SENTINEL

  • Yalnızca dönüştürme işleçleri için yöntemin dönüş değeri olarak kodlanmış bir ' ~'ve ardından dönüş türünü, daha önce kodlanmış.

  • Genel türler için tür adı geri tick ve ardından genel tür parametre sayısını belirten bir sayı tarafından izleyecektir.Örnek:

    <member name="T:MyClass`2">
    

    Olarak tanımlanan bir tür için public class MyClass<T, U>.

    Genel türler parametre olarak alma yöntemleri için başında geri işaretleri (örneğin 0 ','1) sayı olarak genel tür parametresi belirtildi.Sıfır tabanlı dizi gösterim için türün genel parametreleri temsil eden her numara.

Örnek

Aşağıdaki örnekler için bir sınıf Kimliğini nasıl dizeler ve üyelerine oluşturulur.

// xml_id_strings.cpp
// compile with: /clr /doc /LD
/// 
namespace N {  
// "N:N"

   /// <see cref="System" />
   //  <see cref="N:System"/>
   ref class X {    
   // "T:N.X"

   protected:
      /// 
      !X(){}   
      // "M:N.X.Finalize", destructor's representation in metadata
 
   public:
      /// 
      X() {}   
      // "M:N.X.#ctor"

      /// 
      static X() {}   
      // "M:N.X.#cctor"

      /// 
      X(int i) {}   
      // "M:N.X.#ctor(System.Int32)"

      /// 
      ~X() {}   
      // "M:N.X.Dispose", Dispose function representation in metadata

      /// 
      System::String^ q;   
      // "F:N.X.q"

      /// 
      double PI;   
      // "F:N.X.PI"

      /// 
      int f() { return 1; }   
      // "M:N.X.f"

      /// 
      int bb(System::String ^ s, int % y, void * z) { return 1; }
      // "M:N.X.bb(System.String,System.Int32@,System.Void*)"

      /// 
      int gg(array<short> ^ array1, array< int, 2 >^ IntArray) { return 0; } 
      // "M:N.X.gg(System.Int16[], System.Int32[0:,0:])"

      /// 
      static X^ operator+(X^ x, X^ xx) { return x; }
     // "M:N.X.op_Addition(N.X,N.X)"

      /// 
      property int prop;   
      // "M:N.X.prop"

      /// 
      property int prop2 {   
      // "P:N.X.prop2"

         /// 
         int get() { return 0; }
         // M:N.X.get_prop2

         /// 
         void set(int i) {}
         // M:N.X.set_prop2(System.Int32)
      }

      /// 
      delegate void D(int i); 
      // "T:N.X.D"

      /// 
      event D ^ d; 
      // "E:N.X.d"

      /// 
      ref class Nested {}; 
      // "T:N.X.Nested"

      /// 
      static explicit operator System::Int32 (X x) { return 1; } 
      // "M:N.X.op_Explicit(N.X!System.Runtime.CompilerServices.IsByValue)~System.Int32"
   };
}

Ayrıca bkz.

Diğer Kaynaklar

XML Belgeleri (Visual C++)