Aracılığıyla paylaş


.NET'te Yansıma

tr-TR: System.Reflection ad alanındaki sınıflar, System.Type ile birlikte, yüklenen derlemeler ve bunların içinde tanımlanan türler, örneğin sınıflar, arabirimler, ve değer türleri (yani, yapılar ve numaralandırmalar) hakkında bilgi edinmenizi sağlar. Ayrıca yansımayı kullanarak çalışma zamanında tür örnekleri oluşturabilir ve bunları çağırıp bunlara erişebilirsiniz.

Bütünleştirmeler modülleri içerir, modüller de türleri, ve türler üyeleri içerir. Reflection, derlemeleri, modülleri ve türleri kapsülleyen nesneler sunar. 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 için yansımayı kullanabilirsiniz. Daha sonra türün yöntemlerini çağırabilir veya alanlarına ve özelliklerine erişebilirsiniz. Yansımanın tipik kullanımları şunlardır:

  • Derlemeleri tanımlamak ve yüklemek, derleme bildiriminde listelenen modülleri yüklemek ve bu derlemeden bir tür bulup bunun bir örneğini oluşturmak için kullanın Assembly .
  • Modülü içeren derleme ve modüldeki sınıflar gibi bilgileri bulmak için kullanın Module . Ayrıca modülde tanımlanan tüm genel yöntemleri veya belirli, genel olmayan diğer yöntemleri de alabilirsiniz.
  • Bir oluşturucunun adını, parametrelerini, erişim değiştiricilerini (örneğin ConstructorInfo veya public) ve uygulama ayrıntılarını (örneğin private veya abstract) bulmak için virtual kullanın. Belirli bir oluşturucuyu çağırmak için bir GetConstructors veya GetConstructor yöntemini kullanın Type.
  • Bir yöntemin adı, dönüş türü, parametreleri, erişim değiştiricileri ve uygulama ayrıntıları (veya MethodInfogibiabstract) gibi bilgileri bulmak için kullanınvirtual. Belirli bir yöntemi çağırmak için bir GetMethods’nin GetMethod veya Type yöntemini kullanın.
  • Bir alanın adı, erişim değiştiricileri ve uygulama ayrıntıları (örneğinFieldInfo) gibi bilgileri bulmak ve alan değerlerini almak veya ayarlamak için kullanınstatic.
  • Ad, olay işleyicisi veri türü, özel öznitelikler, bildirim türü ve bir olayın yansıtılan türü gibi bilgileri bulmak ve olay işleyicileri eklemek veya kaldırmak için kullanın EventInfo .
  • Bir özelliğin adı, veri türü, bildirim türü, yansıtılmış türü ve salt okunur veya yazılabilir durumu gibi bilgileri bulmak ve özellik değerlerini almak veya ayarlamak için kullanın PropertyInfo .
  • Parametrenin adı, veri türü, parametrenin giriş veya çıkış parametresi olup olmadığı ve parametrenin yöntem imzasında konumu gibi bilgileri bulmak için kullanın ParameterInfo .
  • CustomAttributeData özel öznitelikler hakkındaki bilgileri bulmak için MetadataLoadContext veya yalnızca yansıma bağlamında (.NET Framework) çalışırken kullanın. CustomAttributeData , öznitelikleri örnekleri oluşturmadan incelemenize olanak tanır.

Ad alanının sınıfları System.Reflection.Emit , çalışma zamanında türler oluşturmanıza olanak tanıyan özel bir yansıma biçimi sağlar.

Yansıma, kullanıcıların türleri seçmesine ve ardından bu türlerle ilgili bilgileri görüntülemesine olanak tanıyan tür tarayıcıları oluşturmak için de kullanılabilir.

Yansıma için başka kullanımlar da vardır. JScript gibi diller için derleyiciler, sembol tabloları oluşturmak için yansıma kullanır. Ad alanındaki System.Runtime.Serialization sınıflar, verilere erişmek ve kalıcı olacak alanları belirlemek için yansıma kullanır. System.Runtime.Remoting adı alanındaki sınıflar, serileştirme yoluyla dolaylı olarak yansıma kullanır.

Yansımadaki çalışma zamanı türleri

Yansıma, Type ve MethodInfo gibi türleri, üyeleri, parametreleri ve diğer kod varlıklarını temsil eden sınıflar sağlar. Ancak, yansıma kullandığınızda, çoğu soyut (MustInherit Visual Basic'te) olan bu sınıflarla doğrudan çalışmazsınız. Bunun yerine, ortak dil çalışma zamanı (CLR) tarafından sağlanan türlerle çalışırsınız.

Örneğin, bir typeof nesneyi almak için C# GetType işlecini (TypeVisual Basic'te) kullandığınızda, nesne gerçekten bir RuntimeTypeolur. RuntimeType öğesinden türetilir ve tüm soyut yöntemlerin uygulamalarını sağlar.

Bu çalışma zamanı sınıfları internal (Visual Basic'te Friend). Davranışları temel sınıf belgeleri tarafından açıklandığından, temel sınıflarından ayrı olarak belgelenmez.

Kaynak