Yansıma (C#)
Yansıma Type derlemeleri, modülleri ve türleri tanımlayan nesneler (türü) sağlar. Bir türün örneğini dinamik olarak oluşturmak, türü var olan bir nesneye bağlamak veya var olan bir nesneden türü almak ya da onun yöntemlerini çağırmak ya da alanları ve özelliklerine erişmek için yansıma kullanabilirsiniz. Kodunuzda öznitelikler kullanıyorsanız, yansıma bunlara erişmenizi sağlar. Daha fazla bilgi için bkz. öznitelikler.
GetType() Object Bir değişkenin türünü almak için temel sınıftan tüm türler tarafından devralınan yöntemi kullanan basit bir yansıma örneği aşağıda verilmiştir:
Not
using System; using System.Reflection; . Cs dosyanızın üst kısmına ve eklediğinizden emin olun.
// Using GetType to obtain type information:
int i = 42;
Type type = i.GetType();
Console.WriteLine(type);
Çıktı: System.Int32 .
Aşağıdaki örnek, yüklü derlemenin tam adını almak için yansıma kullanır.
// Using Reflection to get information of an Assembly:
Assembly info = typeof(int).Assembly;
Console.WriteLine(info);
Çıktı: System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e .
Not
C# anahtar sözcükleri protected ve internal Ara DIL (IL) içinde hiçbir anlamı yoktur ve yansıma API 'lerinde kullanılmaz. Il 'deki ilgili terimler Aile ve derlemedir. internalYansıma kullanarak bir yöntemi tanımlamak için IsAssembly özelliğini kullanın. Bir yöntemi tanımlamak için protected internal öğesini kullanın IsFamilyOrAssembly .
Yansımaya genel bakış
Aşağıdaki durumlarda yansıma yararlı olur:
- Programınızın meta verilerindeki özniteliklere erişmeniz gerektiğinde. Daha fazla bilgi için bkz. özniteliklerde depolanan bilgileri alma.
- Bir derlemedeki türleri İnceleme ve örnekleme için.
- Çalışma zamanında yeni türler oluşturmak için. İçinde sınıfları kullanın System.Reflection.Emit .
- Geç bağlama gerçekleştirmek için çalışma zamanında oluşturulan türler üzerindeki yöntemlere erişme. Türleri dinamik olarak yükleme ve kullanmakonusuna bakın.
İlgili bölümler
Daha fazla bilgi için:
- Yansıma
- Tür Bilgilerini Görüntüleme
- Yansıma ve Genel Türler
- System.Reflection.Emit
- Özniteliklerde Depolanan Bilgileri Alma