0Pricing
C# Academy · Ders

Kaynak düzeyi bilgileri (Caller öznitelikleri)

Günlükler, koruma denetimleri ve özellik bildirimleri için çağrı konumu bilgilerini yakalamak üzere CallerMemberName, CallerFilePath ve CallerLineNumber kullanın.

Kaynak düzeyi bilgileri (Caller öznitelikleri), CoddyKit'te ücretsiz bir C# Academy dersidir. Bu, 3 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C# Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C# Academy kursu toplamda 3 dersten oluşur.

Çağıran bilgileri neden kullanılır

Amaç: Çağrı konumuna ait bilgileri otomatik olarak yakalamak.

  • CallerMemberName — kim çağırdı
  • CallerFilePath — hangi dosya
  • CallerLineNumber — hangi satır
  • Günlükler, koruma denetimleri ve bildirimler için idealdir

Günlükler için üye adı

CallerMemberName, bağımsız değişken atlandığında çağıranın yöntem veya özellik adını otomatik olarak doldurur.

using System;
using System.Runtime.CompilerServices;

public static class Log
{
  // Caller fills "member" automatically if not provided
  public static void Info(string msg, [CallerMemberName] string member = null)
  {
    Console.WriteLine("[" + (member ?? "?") + "] " + msg);
  }
}

public class Program
{
  static void DoWork() { Log.Info("started"); }

  public static void Main(string[] args)
  {
    Log.Info("app boot");
    DoWork(); // prints caller method name
  }
}

Dosya ve satır bilgileri

Nokta atışı tanılama için CallerFilePath ve CallerLineNumber ekleyin.

using System;
using System.Runtime.CompilerServices;

public static class Diag
{
  public static void Trace(string msg,
    [CallerFilePath] string file = null,
    [CallerLineNumber] int line = 0,
    [CallerMemberName] string member = null)
  {
    Console.WriteLine(file + ":" + line + " in " + member + " -> " + msg);
  }
}

public class Program
{
  static void Step() { Diag.Trace("stepping"); }

  public static void Main(string[] args)
  {
    Diag.Trace("start");
    Step();
  }
}

Özellik bildirimleri

Sabit kodlanmış dizeler kullanmaktan kaçınmak için ayarlayıcılarda veya olay yardımcılarında CallerMemberName kullanın.

using System;
using System.Runtime.CompilerServices;

public class Person
{
  private string _name;

  // Notify helper uses CallerMemberName so callers need not pass the property name
  void Notify([CallerMemberName] string property = null)
  {
    Console.WriteLine("Changed: " + property);
  }

  public string Name
  {
    get { return _name; }
    set { _name = value; Notify(); } // property name auto-filled
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    Person p = new Person();
    p.Name = "Ada"; // prints "Changed: Name"
  }
}

Çağıran adıyla koruma denetimleri

Çağıran bilgisi, elle yazılmış dizelere gerek kalmadan koruma mesajlarını daha anlaşılır hâle getirir.

using System;
using System.Runtime.CompilerServices;

public static class Guard
{
  public static void NotNull(object x, [CallerMemberName] string caller = null)
  {
    if (x == null) throw new ArgumentNullException("value", "Null passed by " + (caller ?? "?"));
  }
}

public class Program
{
  static void Save(string path)
  {
    Guard.NotNull(path); // if null, message includes "Save"
    Console.WriteLine("Saving to " + path);
  }

  public static void Main(string[] args)
  {
    try
    {
      Save(null);
    }
    catch (Exception ex)
    {
      Console.WriteLine(ex.Message);
    }
  }
}

İpuçları ve notlar

Notlar:

  • Çağıran öznitelikleri, varsayılan değerlere sahip isteğe bağlı parametrelerle çalışır.
  • Gizli bilgiler için dosya yollarının tam değerlerine güvenmeyin; yollar klasörleri açığa çıkarabilir.
  • Günlüğe kaydetme, tanılama ve özellik değişikliği olayları için idealdir.

Çağıran adı özniteliği

Hızlı kontrol: Bir yöntemin çağıranının adını varsayılan parametre değeri olarak almasını sağlayan öznitelik hangisidir?

Özet

Özet: Çağıran bağlamını ek bir maliyet olmadan yakalamak için isteğe bağlı parametrelere CallerMemberName, CallerFilePath ve CallerLineNumber ekleyin.

Sıkça Sorulan Sorular

“Kaynak düzeyi bilgileri (Caller öznitelikleri)” dersi ücretsiz mi?

Evet — “Kaynak düzeyi bilgileri (Caller öznitelikleri)” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C# Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C# Academy kursu toplamda 3 dersten oluşur.

“Kaynak düzeyi bilgileri (Caller öznitelikleri)” dersinde ne öğreneceğim?

Günlükler, koruma denetimleri ve özellik bildirimleri için çağrı konumu bilgilerini yakalamak üzere CallerMemberName, CallerFilePath ve CallerLineNumber kullanın. C# Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

C# Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te C# Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 3 dersinin 2. dersidir.

“Kaynak düzeyi bilgileri (Caller öznitelikleri)” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu C# Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her C# Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Type, MethodInfo, etkinleştirme ve özel öznitelikler
  2. Kaynak düzeyi bilgileri (Caller öznitelikleri)
  3. Hafif meta programlama senaryoları
← C# Academy Sayfasına Dön