CustomReflectionContext Sınıf

Tanım

Özelleştirilebilir bir yansıma bağlamı temsil eder.

public ref class CustomReflectionContext abstract : System::Reflection::ReflectionContext
public abstract class CustomReflectionContext : System.Reflection.ReflectionContext
type CustomReflectionContext = class
    inherit ReflectionContext
Public MustInherit Class CustomReflectionContext
Inherits ReflectionContext
Devralma
CustomReflectionContext
Türetilmiş

Açıklamalar

CustomReflectionContext yansıma modelinin tamamını yeniden uygulamadan yansıma nesnelerinden özel öznitelikler eklemenizi veya kaldırmanızı ya da bu nesnelere sahte özellikler eklemenizi sağlar. Varsayılan değer CustomReflectionContext , herhangi bir değişiklik yapmadan yansıma nesnelerini sarmalar, ancak ilgili yöntemleri alt sınıflandırıp geçersiz kılarak, yansıtılan herhangi bir parametreye veya üyeye uygulanan öznitelikleri ekleyebilir, kaldırabilir veya değiştirebilir ya da yansıtılmış bir türe yeni özellikler ekleyebilirsiniz.

Örneğin, kodunuzun fabrika yöntemlerine belirli bir özniteliği uygulama kuralına uyduğunu, ancak artık öznitelikleri olmayan üçüncü taraf kodla çalışmanız gerektiğini varsayalım. Öznitelikleri olması gereken nesneleri tanımlamak için bir kural belirtmek ve kodunuzdan görüntülendiğinde nesneleri bu özniteliklerle sağlamak için kullanabilirsiniz CustomReflectionContext .

Etkili bir şekilde kullanmak CustomReflectionContext için, yansıtılan nesneleri kullanan kodun, yansıtılan tüm nesnelerin çalışma zamanı yansıma bağlamıyla ilişkili olduğunu varsaymak yerine bir yansıma bağlamı belirtme düşüncesini desteklemesi gerekir. .NET'daki birçok yansıma yöntemi bu amaçla bir ReflectionContext parametre sağlar.

Yansıtılan bir parametreye veya üyeye uygulanan öznitelikleri değiştirmek için GetCustomAttributes(ParameterInfo, IEnumerable<Object>) veya GetCustomAttributes(MemberInfo, IEnumerable<Object>) yöntemlerini geçersiz kılın. Bu yöntemler yansıtılan nesneyi ve öznitelik listesini geçerli yansıma bağlamı altına alır ve özel yansıma bağlamı altında sahip olması gereken özniteliklerin listesini döndürür.

Warning

CustomReflectionContextgeçersiz kılmalar, sağlanan MemberInfo veya çağırarak ParameterInfoöznitelikleri sorgulamamalıdır; bunun yerine aşırı yüklemelere geçirilen diziyi GetCustomAttributes kullanın declaredAttributesGetCustomAttributes.

Yansıtılan bir türe özellik eklemek için AddProperties yöntemini geçersiz kılın. yöntemi, yansıtılan türü belirten bir parametre kabul eder ve ek özelliklerin listesini döndürür. Özellik nesneleri döndürmek için CreateProperty yöntemini kullanmanız gerekir. Özellik erişimcisi olarak hizmet eden temsilcileri, özellik oluştururken belirtebilir ve erişimcilerden birini atlayarak yalnızca okunabilir veya yalnızca yazılabilir bir özellik oluşturabilirsiniz. Bu tür geçici özelliklerin herhangi bir meta veri veya Ortak Ara Dil (CIL) desteği olmadığını unutmayın.

Warning

  • Yansıma bağlamlarıyla çalışırken yansıtılan nesneler arasındaki eşitlik konusunda dikkatli olun çünkü nesneler aynı yansıtılan nesneyi birden çok bağlamda temsil edebilir. Yansıtılan bir nesnenin belirli bir yansıma bağlamındaki sürümünü elde etmek için MapType yöntemini kullanabilirsiniz.
  • Belirli bir yansıtma nesnesi tarafından döndürülen ve CustomReflectionContext yöntemiyle elde edilen öznitelikleri bir GetCustomAttributes nesnesi değiştirir. Yöntemi tarafından döndürülen özel öznitelik verilerini değiştirmez ve özel bir yansıma bağlamı GetCustomAttributesData kullandığınızda bu iki liste eşleşmez.

Aşağıdaki örnek, adları "To" ile başlayan belirli bir türün tüm üyelerine özel bir öznitelik eklemek için CustomReflectionContext sınıfının nasıl alt sınıf yapılacağını göstermektedir.

Oluşturucular

Name Description
CustomReflectionContext()

CustomReflectionContext sınıfının yeni bir örneğini başlatır.

CustomReflectionContext(ReflectionContext)

Temel olarak belirtilen yansıma bağlamıyla sınıfının yeni bir örneğini CustomReflectionContext başlatır.

Yöntemler

Name Description
AddProperties(Type)

Türetilmiş bir sınıfta geçersiz kılındığında, bu yansıma bağlamında gösterildiği gibi belirtilen tür için ek özellikler koleksiyonu sağlar.

CreateProperty(Type, String, Func<Object,Object>, Action<Object,Object>, IEnumerable<Attribute>, IEnumerable<Attribute>, IEnumerable<Attribute>)

yöntemiyle ve belirtilen özel öznitelikleri AddProperties(Type) kullanarak bir türe eklenecek özelliği temsil eden bir nesne oluşturur.

CreateProperty(Type, String, Func<Object,Object>, Action<Object,Object>)

yöntemiyle AddProperties(Type) kullanılacak bir türe eklenecek özelliği temsil eden bir nesne oluşturur.

Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.

(Devralındığı yer: Object)
GetCustomAttributes(MemberInfo, IEnumerable<Object>)

Türetilmiş bir sınıfta geçersiz kılındığında, bu yansıma bağlamında gösterildiği gibi belirtilen üye için özel özniteliklerin listesini sağlar.

GetCustomAttributes(ParameterInfo, IEnumerable<Object>)

Türetilmiş bir sınıfta geçersiz kılındığında, bu yansıma bağlamında gösterildiği gibi belirtilen parametre için özel özniteliklerin listesini sağlar.

GetHashCode()

Varsayılan karma işlevi işlevi görür.

(Devralındığı yer: Object)
GetType()

Geçerli örneğin Type alır.

(Devralındığı yer: Object)
GetTypeForObject(Object)

Bu yansıma bağlamında belirtilen nesne türünün gösterimini alır.

(Devralındığı yer: ReflectionContext)
MapAssembly(Assembly)

Bu yansıma bağlamında, başka bir yansıma bağlamından bir nesne tarafından temsil edilen bir derlemenin gösterimini alır.

MapType(TypeInfo)

Bu yansıma bağlamında, başka bir yansıma bağlamından bir nesne tarafından temsil edilen bir türün gösterimini alır.

MemberwiseClone()

Geçerli Objectbasit bir kopyasını oluşturur.

(Devralındığı yer: Object)
ToString()

Geçerli nesneyi temsil eden bir dize döndürür.

(Devralındığı yer: Object)

Şunlara uygulanır