CodeBlanks Logo Icon CodeBlanks

PropertyInfo GetValue/SetValue

C# kursu · İleri seviye · Ders 47/83

PropertyInfo ile özellik değerini okuyup yazmayı öğrenirsin.

PropertyInfo GetValue/SetValue

PropertyInfo bir özelliğin metadata'sını tutar. pi.GetValue(obj) özelliğin değerini okur; pi.SetValue(obj, value) yazar. Değer object? olarak gelir.

Bu, serileştiriciler ve ORM'lerin özelliklere tip bilgisine bakmadan erişmesini sağlar. Örneğin bir serileştirici, her özellik için GetValue çağırıp sonucu metin biçimine yazar. Kod üretecinde de aynı yöntem kullanılır.

İndeksli özellikler

İndeksli özellikler için GetValue ve SetValue ikinci bir parametre alır: indis dizisi. pi.GetValue(obj, new object[] { 0 }) gibi. Bu, bir liste özelliğinin ilk öğesini okur.

İndeksli özellikler nadirdir; çoğu sırada özellik için GetValue(obj) ve SetValue(obj, value) yeterlidir. Serileştiriciler, indisli özellikleri genellikle atlar çünkü metin tabanlı biçimler düz anahtar-değer çiftleri bekler.

Uygulama Özellik değerini oku ve yaz

Aşağıdaki Person sınıfında PropertyInfo pi = typeof(Person).GetProperty("Name"); ile Name özelliğini al. pi.SetValue(p, "Ayşe"); ile değer yaz. pi.GetValue(p) ile okuyup Console.WriteLine ile yazdır.

Örnek çözümü göster
PropertyInfo pi = typeof(Person).GetProperty("Name"); ile özelliği al. pi.SetValue(p, "Ayşe"); ile değer yaz. Console.WriteLine(pi.GetValue(p)); ile oku ve yazdır.
Örnek çözüm:
using System;
using System.Reflection;

class Person
{
    public string Name { get; set; } = "Başlangıç";
}

class Program
{
    static void Main()
    {
        Person p = new Person();
        PropertyInfo pi = typeof(Person).GetProperty("Name");
        pi.SetValue(p, "Ayşe");
        Console.WriteLine(pi.GetValue(p));
    }
}

Kendini test et

  1. GetValue çağrısını tamamla

    object val = pi.____(obj);
    Cevabı göster
    object val = pi.GetValue(obj);
  2. SetValue kaç parametre alır?

    • Yalnızca bir (değer)
    • İki (örnek ve değer)
    • Üç (örnek, değer ve tür)
    • Hiç
    Cevabı göster

    İki (örnek ve değer) — Doğru. SetValue, örnek ve değer olmak üzere iki parametre alır.

  3. Metodu eyleme eşle

    GetValue
    Okur
    SetValue
    Yazar
    GetMethod
    Metot alır
    GetField
    Alan alır

İleri seviye bölümündeki tüm dersler