0Pricing
C# Academy · Pelajaran

Type, MethodInfo, aktivasi, atribut khusus

Dapatkan objek Type, temukan MethodInfo, panggil metode, buat instans dengan Activator, serta definisikan/baca atribut khusus.

Type, MethodInfo, aktivasi, atribut khusus adalah pelajaran C# Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 3. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C# Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C# Academy mencakup 3 pelajaran total.

Ikhtisar

Tujuan: Gunakan refleksi dengan aman.

  • Dapatkan Type
  • Temukan MethodInfo
  • Buat melalui aktivator
  • Tentukan dan baca atribut

Mendapatkan Type

Dapatkan Type dari typeof, dari sebuah instance dengan GetType(), atau berdasarkan nama melalui Type.GetType.

using System;

public class Sample { }

public class Program
{
  public static void Main(string[] args)
  {
    // 1) From a compile-time type
    Type t1 = typeof(Sample);

    // 2) From an instance
    Sample s = new Sample();
    Type t2 = s.GetType();

    // 3) From a full name (needs assembly-qualified name for external types)
    Type t3 = Type.GetType("System.String");

    Console.WriteLine(t1.Name + ", " + t2.FullName + ", " + (t3 == null ? "null" : t3.Name));
  }
}

MethodInfo.Invoke

Gunakan GetMethod untuk menemukan metode dan Invoke untuk memanggilnya. Berikan instance dan larik argumen.

using System;
using System.Reflection;

public class Greeter
{
  public string Hello(string name) { return "Hello, " + name; }
}

public class Program
{
  public static void Main(string[] args)
  {
    Greeter g = new Greeter();
    Type t = typeof(Greeter);

    MethodInfo mi = t.GetMethod("Hello"); // public instance method
    object result = mi.Invoke(g, new object[] { "Ada" }); // call dynamically

    Console.WriteLine(result); // Hello, Ada
  }
}

Dasar-dasar Activator

Activator.CreateInstance(Type) membuat objek menggunakan konstruktor publik tanpa parameter.

using System;

public class Person
{
  public string Name { get; set; }
  public Person() { Name = "Unknown"; } // parameterless ctor
}

public class Program
{
  public static void Main(string[] args)
  {
    Type tp = typeof(Person);
    object o = Activator.CreateInstance(tp); // uses public parameterless ctor
    Person p = (Person)o;
    p.Name = "Alan";
    Console.WriteLine("Created: " + p.Name);
  }
}

Atribut kustom

Buat kelas Attribute kecil dan ambil atribut tersebut melalui GetCustomAttributes pada tipe atau metode.

using System;
using System.Reflection;

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public sealed class LabelAttribute : Attribute
{
  public string Text { get; private set; }
  public LabelAttribute(string text) { Text = text; }
}

[Label("Utility class")]
public class Utils
{
  [Label("Adds two ints")]
  public static int Add(int a, int b) { return a + b; }
}

public class Program
{
  public static void Main(string[] args)
  {
    Type t = typeof(Utils);

    // Read class attribute
    object[] classAttrs = t.GetCustomAttributes(typeof(LabelAttribute), false);
    if (classAttrs.Length > 0)
      Console.WriteLine("Class label: " + ((LabelAttribute)classAttrs[0]).Text);

    // Read method attribute
    MethodInfo mi = t.GetMethod("Add");
    object[] methodAttrs = mi.GetCustomAttributes(typeof(LabelAttribute), false);
    if (methodAttrs.Length > 0)
      Console.WriteLine("Method label: " + ((LabelAttribute)methodAttrs[0]).Text);
  }
}

Kiat dan keamanan

Kiat:

  • Periksa nilai null dari Type.GetType dan anggota yang tidak ditemukan.
  • Utamakan typeof jika memungkinkan (lebih cepat dan lebih aman).
  • Pusatkan penggunaan refleksi dan dokumentasikan dengan baik.
  • Gunakan BindingFlags untuk pencarian anggota nonpublik atau statis.

Dasar-dasar aktivasi

Pemeriksaan singkat: API mana yang membuat instans dari suatu Type yang memiliki konstruktor publik tanpa parameter?

Ringkasan

Ringkasan: Dapatkan sebuah Type, temukan MethodInfo, buat dengan Activator, lalu baca atribut menggunakan GetCustomAttributes.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Type, MethodInfo, aktivasi, atribut khusus” gratis?

Ya — teks lengkap “Type, MethodInfo, aktivasi, atribut khusus” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C# Academy, upgrade ke CoddyKit PRO. Kursus C# Academy mencakup 3 pelajaran total.

Apa yang akan aku pelajari di “Type, MethodInfo, aktivasi, atribut khusus”?

Dapatkan objek Type, temukan MethodInfo, panggil metode, buat instans dengan Activator, serta definisikan/baca atribut khusus. Kamu berlatih C# Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai C# Academy?

Tidak diperlukan pengalaman sebelumnya. C# Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 3.

Berapa lama pelajaran “Type, MethodInfo, aktivasi, atribut khusus” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran C# Academy ini?

Ya. Setiap pelajaran C# Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Type, MethodInfo, aktivasi, atribut khusus
  2. Informasi tingkat sumber (atribut Caller)
  3. Skenario metaprogramming ringan
← Kembali ke C# Academy