Latest web development tutorials

C # properti (Atribut)

Karakteristik (Atribut) adalah sebuah program untuk mentransfer berbagai elemen (seperti kelas, metode, struktur, mantri, komponen, dll) dalam perilaku run-time informasi tag deklaratif.Anda dapat menambahkan informasi deklaratif ke program dengan menggunakan fitur tersebut. Label pernyataan diterapkan dengan menempatkannya di depan elemen dalam tanda kurung siku ([]) untuk menggambarkan.

Karakteristik (Atribut) untuk menambahkan metadata, seperti instruksi compiler dan komentar, deskripsi, metode, informasi tambahan dan sebagainya. Net Framework menyediakan dua jenis fitur: sifatyang telah ditetapkandan propertikustom.

sifat yang telah ditentukan (Atribut)

sifat yang telah ditentukan (Atribut) sintaks berikut:

[Atribut (positional_parameters, name_parameter = nilai, ...)]
elemen

Karakteristik (Atribut) nama dan nilai-nilai yang ditentukan dalam kurung persegi, ditempatkan sebelum elemen yang berlaku. positional_parameters telah ditentukan informasi yang diperlukan, name_parameter telah ditentukan informasi opsional.

atribut yang telah ditetapkan (Atribut)

Net Framework menyediakan tiga atribut yang telah ditetapkan:

  • AttributeUsage
  • bersyarat
  • usang

AttributeUsage

Yang telah ditetapkan atributAttributeUsage menjelaskan cara menggunakan kelas atribut khusus.Ini menentukan jenis properti dapat diterapkan untuk proyek.

Ketentuan dari fitur ini memiliki sintaks berikut:

[AttributeUsage (
   validon,
   AllowMultiple = allowmultiple,
   = Mewarisi warisan
)]

dimana:

  • Validon telah ditentukan parameter unsur bahasa karakteristik dapat ditempatkan. Ini adalah kombinasi dari nilai pencacahAttributeTargets.Nilai default adalahAttributeTargets.All.
  • Parameterallowmultiple (opsional)memberikan nilai Boolean untuk propertiAllowMultipleproperti (properti). Jika benar, maka fitur ini lebih berguna. Nilai default adalah palsu (single use).
  • Parametermewarisi (opsional)memberikan nilai Boolean untuk propertiwarisanproperti (properti). Jika benar, properti ini adalah kelas turunan dapat diwariskan. Nilai default adalah palsu (tidak diwariskan).

Sebagai contoh:

[AttributeUsage (AttributeTargets.Class |
AttributeTargets.Constructor |
AttributeTargets.Field |
AttributeTargets.Method |
AttributeTargets.Property, 
AllowMultiple = true)]

bersyarat

Fitur ini menandai sebuah metode kondisi yang telah ditetapkan, pelaksanaannya tergantung pada preprocessing identifier atasnya.

Ini akan menyebabkan kompilasi bersyarat dari metode panggilan, tergantung pada nilai tertentu sepertiDebug atau Trace.Misalnya, nilai variabel ditampilkan saat debugging kode.

Ketentuan dari fitur ini memiliki sintaks berikut:

[Bersyarat (
   conditionalSymbol
)]

Sebagai contoh:

[Bersyarat ( "DEBUG")]

Contoh berikut menunjukkan fitur ini:

DEBUG #define
menggunakan System;
menggunakan System.Diagnostics;
public class KelasSaya
{
    [Bersyarat ( "DEBUG")]
    public static void Pesan (string msg)
    {
        Console.WriteLine (msg);
    }
}
Uji kelas
{
    static void function1 ()
    {
        Myclass.Message ( "Dalam Fungsi 1.");
        function2 ();
    }
    static void function2 ()
    {
        Myclass.Message ( "Dalam Fungsi 2.");
    }
    public void static Main ()
    {
        Myclass.Message ( "Dalam fungsi utama.");
        function1 ();
        Console.ReadKey ();
    }
}

Ketika kode di atas dikompilasi dan dijalankan, menghasilkan hasil sebagai berikut:

Dalam fungsi utama
Dalam Fungsi 1
Dalam Fungsi 2

usang

Atribut yang telah ditetapkan ditandai entitas Program sebaiknya tidak digunakan. Hal ini memungkinkan Anda untuk memberitahu compiler untuk membuang elemen target tertentu. Sebagai contoh, ketika metode baru yang digunakan di kelas, tetapi Anda masih ingin menyimpan kelas dalam metode lama, Anda dapat menampilkan metode baru harus digunakan bukan metode lama pesan untuk menandainya sebagai usang (usang a).

Ketentuan dari fitur ini memiliki sintaks berikut:

[Usang (
   pesan
)]
[Usang (
   pesan,
   ISERROR
)]

dimana:

  • Pesan Parameter,adalah string yang menjelaskan proyek serta alasan mengapa usang apa yang menggunakan alternatif.
  • ParameterISERROR,adalah nilai Boolean. Jika benar, compiler harus menggunakan proyek sebagai sebuah kesalahan. Nilai default adalah palsu (compiler menghasilkan peringatan).

Contoh berikut menunjukkan fitur ini:

menggunakan System;
public class MyClass
{
   [Usang ( "Jangan gunakan OldMethod, menggunakan NewMethod bukan", true)]
   static void OldMethod ()
   { 
      Console.WriteLine ( "Ini adalah metode lama");
   }
   static void NewMethod ()
   { 
      Console.WriteLine ( "Ini adalah metode baru"); 
   }
   public void static Main ()
   {
      OldMethod ();
   }
}

Ketika Anda mencoba untuk mengkompilasi program, compiler akan memberikan pesan kesalahan yang menyatakan:

 Jangan gunakan OldMethod, menggunakan NewMethod bukan

Buat atribut khusus (Atribut)

Net Framework memungkinkan Anda untuk membuat properti kustom untuk menyimpan informasi deklaratif, dan dapat diambil pada saat runtime. Informasi ini didasarkan pada kriteria desain dan aplikasi perlu dikaitkan dengan elemen target.

Membuat dan menggunakan fitur kustom meliputi empat langkah:

  • Properti pernyataan Kustom
  • Membangun Kustom Properti
  • Terapkan properti kustom pada elemen program target
  • Akses melalui karakteristik refleksi

Langkah terakhir termasuk menulis sebuah program sederhana untuk membaca metadata untuk menemukan berbagai simbol. Metadata adalah data dan informasi yang digunakan untuk menjelaskan data lainnya. Program ini harus menggunakan refleksi untuk mengakses properti saat runtime. Kami akan membahas ini secara rinci dalam bab berikutnya.

Properti pernyataan Kustom

Sebuah sifat khusus baru akan berasal dari kelasSystem.Attribute.Sebagai contoh:

// Bugfix atribut khusus ditugaskan untuk kelas dan anggotanya [AttributeUsage (AttributeTargets.Class |
AttributeTargets.Constructor |
AttributeTargets.Field |
AttributeTargets.Method |
AttributeTargets.Property,
AllowMultiple = true)]

public class debuginfo: System.Attribute

Pada kode di atas, kita telah menyatakan atribut khusus bernamadebuginfodari.

Membangun Kustom Properti

Mari kita membangun atribut khusus bernamadebuginfo,informasi akan disimpan dalam debugger fitur yang diperoleh. Menyimpan informasi berikut:

  • nomor kode bug
  • Pengembang mengenali nama bug
  • Tanggal kajian terakhir dari kode
  • Sebuah pengembang toko pesan string yang menandai

Kamidebuginfotiga kelas pertama akan digunakan untuk menyimpan tiga informasi pribadi properti (properti) dan dengan properti publik untuk menyimpan pesan untuk (properti). Jadi nomor bug nama pengembang dan tanggal tinjauan akan diperlukan positioning debuginfo kelas (posisi) parameter, pesan adalah nama opsional (bernama) parameter.

Setiap properti harus memiliki minimal satu konstruktor. Diperlukan positioning (posisi) parameter yang harus dilalui oleh konstruktor. Kode berikut menunjukkan kategoridebuginfo:

// Bugfix atribut khusus ditugaskan untuk kelas dan anggotanya [AttributeUsage (AttributeTargets.Class |
AttributeTargets.Constructor |
AttributeTargets.Field |
AttributeTargets.Method |
AttributeTargets.Property,
AllowMultiple = true)]

public class debuginfo: System.Attribute
{
  private int Bugno;
  pengembang private string;
  tali lastReview swasta;
  Pesan public string;

  publik debuginfo (int bg, tali dev, tali d)
  {
      this.bugNo = bg;
      this.developer = dev;
      this.lastReview = d;
  }

  public int Bugno
  {
      mendapatkan
      {
          kembali Bugno;
      }
  }
  publik tali Developer
  {
      mendapatkan
      {
          kembali pengembang;
      }
  }
  public string LastReview
  {
      mendapatkan
      {
          kembali lastReview;
      }
  }
  Pesan public string
  {
      mendapatkan
      {
          kembali pesan;
      }
      set
      {
          Pesan = nilai;
      }
  }
}

Terapkan properti kustom

Dengan menempatkan properti segera sebelum target untuk menerapkan fitur ini:

[Debuginfo (45, "Zara Ali", "2012/12/08", Pesan = "Kembali type mismatch")]
[Debuginfo (49, "Nuha Ali", "2012/10/10", Pesan = "tidak digunakan variabel")]
kelas Rectangle
{
  // Variabel Anggota dilindungi panjang ganda;
  dilindungi lebar ganda;
  Rectangle publik (double l, ganda w)
  {
      panjang = l;
      width = w;
  }
  [Debuginfo (55, "Zara Ali", "19/10/2012",
  Pesan = "Kembali type mismatch")]
  publik GetArea ganda ()
  {
      kembali panjang * lebar;
  }
  [Debuginfo (56, "Zara Ali", "19/10/2012")]
  public void Tampilan ()
  {
      Console.WriteLine ( "Panjang: {0}", panjang);
      Console.WriteLine ( "Lebar: {0}", lebar);
      Console.WriteLine ( "Area: {0}", GetArea ());
  }
}

Dalam bab berikutnya, kita akan menggunakan objek kelas Refleksi untuk mengambil informasi ini.