Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> Bahasa C

C# - Atribut

Sebuah atribut adalah tag deklaratif yang digunakan untuk menyampaikan informasi ke runtime tentang perilaku berbagai elemen seperti kelas, metode, struktur, enumerator, rakitan, dll. dalam program Anda. Anda dapat menambahkan informasi deklaratif ke program dengan menggunakan atribut. Tag deklaratif digambarkan dengan tanda kurung siku ([ ]) yang ditempatkan di atas elemen yang digunakannya.

Atribut digunakan untuk menambahkan metadata, seperti instruksi compiler dan informasi lain seperti komentar, deskripsi, metode dan kelas ke program. .Net Framework menyediakan dua jenis atribut:yang telah ditentukan sebelumnya atribut dan dibuat khusus atribut.

Menentukan Atribut

Sintaks untuk menentukan atribut adalah sebagai berikut

[attribute(positional_parameters, name_parameter = value, ...)]
element

Nama atribut dan nilainya ditentukan dalam tanda kurung siku, sebelum elemen tempat atribut diterapkan. Parameter posisi menentukan informasi penting dan parameter nama menentukan informasi opsional.

Atribut Standar

.Net Framework menyediakan tiga atribut yang telah ditentukan sebelumnya

Penggunaan Atribut

Atribut yang telah ditentukan sebelumnya AttributeUsage menjelaskan bagaimana kelas atribut khusus dapat digunakan. Ini menentukan jenis item yang atributnya dapat diterapkan.

Sintaks untuk menentukan atribut ini adalah sebagai berikut

[AttributeUsage (
   validon,
   AllowMultiple = allowmultiple,
   Inherited = inherited
)]

Dimana,

Misalnya,

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

Kondisi

Atribut yang telah ditentukan ini menandai metode bersyarat yang eksekusinya bergantung pada pengidentifikasi prapemrosesan yang ditentukan.

Ini menyebabkan kompilasi bersyarat dari panggilan metode, tergantung pada nilai yang ditentukan seperti Debug atau Jejak . Misalnya, ini menampilkan nilai variabel saat men-debug kode.

Sintaks untuk menentukan atribut ini adalah sebagai berikut

[Conditional(
   conditionalSymbol
)]

Misalnya,

[Conditional("DEBUG")]

Contoh berikut menunjukkan atribut

Demo Langsung
#define DEBUG
using System;
using System.Diagnostics;

public class Myclass {
   [Conditional("DEBUG")]
   
   public static void Message(string msg) {
      Console.WriteLine(msg);
   }
}
class Test {
   static void function1() {
      Myclass.Message("In Function 1.");
      function2();
   }
   static void function2() {
      Myclass.Message("In Function 2.");
   }
   public static void Main() {
      Myclass.Message("In Main function.");
      function1();
      Console.ReadKey();
   }
}

Ketika kode di atas dikompilasi dan dieksekusi, menghasilkan hasil sebagai berikut

In Main function
In Function 1
In Function 2

Usang

Atribut standar ini menandai entitas program yang tidak boleh digunakan. Ini memungkinkan Anda untuk memberi tahu kompiler untuk membuang elemen target tertentu. Misalnya, ketika metode baru sedang digunakan di kelas dan jika Anda masih ingin mempertahankan metode lama di kelas, Anda dapat menandainya sebagai usang dengan menampilkan pesan bahwa metode baru harus digunakan, bukan metode lama.

Sintaks untuk menentukan atribut ini adalah sebagai berikut

[Obsolete (
   message
)]

[Obsolete (
   message,
   iserror
)]

Dimana,

Program berikut menunjukkan ini

using System;

public class MyClass {
   [Obsolete("Don't use OldMethod, use NewMethod instead", true)]
   
   static void OldMethod() {
      Console.WriteLine("It is the old method");
   }
   static void NewMethod() {
      Console.WriteLine("It is the new method"); 
   }
   public static void Main() {
      OldMethod();
   }
}

Saat Anda mencoba mengkompilasi program, kompilator memberikan pesan kesalahan yang menyatakan

 Don't use OldMethod, use NewMethod instead

Membuat Atribut Khusus

.Net Framework memungkinkan pembuatan atribut khusus yang dapat digunakan untuk menyimpan informasi deklaratif dan dapat diambil pada saat run-time. Informasi ini dapat dikaitkan dengan elemen target apa pun tergantung pada kriteria desain dan kebutuhan aplikasi.

Membuat dan menggunakan atribut khusus melibatkan empat langkah −

Langkah terakhir melibatkan penulisan program sederhana untuk membaca metadata untuk menemukan berbagai notasi. Metadata adalah data tentang data atau informasi yang digunakan untuk mendeskripsikan data lain. Program ini harus menggunakan refleksi untuk mengakses atribut saat runtime. Ini akan kita bahas di bab selanjutnya.

Mendeklarasikan Atribut Khusus

Atribut khusus baru harus diturunkan dari System.Attribute kelas. Misalnya,

//a custom attribute BugFix to be assigned to a class and its members
[AttributeUsage(
   AttributeTargets.Class |
   AttributeTargets.Constructor |
   AttributeTargets.Field |
   AttributeTargets.Method |
   AttributeTargets.Property,
   AllowMultiple = true)]

public class DeBugInfo : System.Attribute

Dalam kode sebelumnya, kami telah mendeklarasikan atribut khusus bernama DeBugInfo .

Membuat Atribut Kustom

Mari kita buat atribut khusus bernama DeBugInfo , yang menyimpan informasi yang diperoleh dengan men-debug program apa pun. Biarkan ia menyimpan informasi berikut

DeBugInfo class memiliki tiga properti pribadi untuk menyimpan tiga informasi pertama dan properti publik untuk menyimpan pesan. Oleh karena itu nomor bug, nama pengembang, dan tanggal peninjauan adalah parameter posisi kelas DeBugInfo dan pesannya adalah parameter opsional atau bernama.

Setiap atribut harus memiliki setidaknya satu konstruktor. Parameter posisi harus melewati konstruktor. Kode berikut menunjukkan DeBugInfo kelas

//a custom attribute BugFix to be assigned to a class and its members
[AttributeUsage(
   AttributeTargets.Class |
   AttributeTargets.Constructor |
   AttributeTargets.Field |
   AttributeTargets.Method |
   AttributeTargets.Property,
   AllowMultiple = true)]

public class DeBugInfo : System.Attribute {
   private int bugNo;
   private string developer;
   private string lastReview;
   public string message;
   
   public DeBugInfo(int bg, string dev, string d) {
      this.bugNo = bg;
      this.developer = dev;
      this.lastReview = d;
   }
   public int BugNo {
      get {
         return bugNo;
      }
   }
   public string Developer {
      get {
         return developer;
      }
   }
   public string LastReview {
      get {
         return lastReview;
      }
   }
   public string Message {
      get {
         return message;
      }
      set {
         message = value;
      }
   }
}

Menerapkan Atribut Khusus

Atribut diterapkan dengan menempatkannya tepat sebelum targetnya

[DeBugInfo(45, "Zara Ali", "12/8/2012", Message = "Return type mismatch")]
[DeBugInfo(49, "Nuha Ali", "10/10/2012", Message = "Unused variable")]
class Rectangle {
   //member variables
   protected double length;
   protected double width;
   public Rectangle(double l, double w) {
      length = l;
      width = w;
   }
   [DeBugInfo(55, "Zara Ali", "19/10/2012", Message = "Return type mismatch")]
   
   public double GetArea() {
      return length * width;
   }
   [DeBugInfo(56, "Zara Ali", "19/10/2012")]
   
   public void Display() {
      Console.WriteLine("Length: {0}", length);
      Console.WriteLine("Width: {0}", width);
      Console.WriteLine("Area: {0}", GetArea());
   }
}

Pada bab berikutnya, kita mengambil informasi atribut menggunakan objek kelas Refleksi.


Bahasa C

  1. Java 8 - Kelas Opsional
  2. C# - Nullables
  3. Ferro-Titanit® Cromoni
  4. AgCu20
  5. DIN 1.7734 4
  6. DIN 1.7734 5
  7. DIN 1.7734 6
  8. PtNi10
  9. PTIr10
  10. Plat Koroplas