CustomReflectionContext Třída

Definice

Představuje přizpůsobitelný kontext reflexe.

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
Dědičnost
CustomReflectionContext
Odvozené

Poznámky

CustomReflectionContext poskytuje způsob, jak přidat nebo odebrat vlastní atributy z objektů reflexe nebo přidat do těchto objektů fiktivní vlastnosti bez opětovné implementace kompletního modelu reflexe. Výchozí nastavení CustomReflectionContext jednoduše zabalí objekty reflexe bez provedení změn, ale podtřídou a přepsáním příslušných metod můžete přidat, odebrat nebo změnit atributy, které se vztahují na jakýkoli reflektující parametr nebo člen, nebo přidat nové vlastnosti do reflektujícího typu.

Předpokládejme například, že váš kód dodržuje konvenci použití konkrétního atributu na metody továrny, ale teď musíte pracovat s kódem třetí strany, který nemá atributy. Můžete použít CustomReflectionContext k určení pravidla pro identifikaci objektů, které by měly mít atributy, a k zadání objektů s těmito atributy, když jsou zobrazeny z vašeho kódu.

Aby bylo možné efektivně využít CustomReflectionContext, musí kód, který používá reflektované objekty, umožňovat specifikaci kontextu reflexe, místo toho, aby se předpokládalo, že všechny reflektované objekty jsou přidruženy ke kontextu reflexe modulu runtime. Mnoho metod reflexe v .NET poskytuje ReflectionContext parametr pro tento účel.

Chcete-li upravit atributy použité u odráženého parametru nebo člena, přepište metodu GetCustomAttributes(ParameterInfo, IEnumerable<Object>) nebo GetCustomAttributes(MemberInfo, IEnumerable<Object>). Tyto metody přebírají reflektovaný objekt a seznam atributů v aktuálním kontextu reflexe a vrátí seznam atributů, které by měl mít v kontextu vlastní reflexe.

Warning

CustomReflectionContext přepisy by neměly dotazovat atributy na zadaném MemberInfo nebo ParameterInfo voláním GetCustomAttributes; místo toho použijte declaredAttributes sekvenci předanou GetCustomAttributes přetížení.

Chcete-li přidat vlastnosti do reflektního typu, přepište metodu AddProperties . Metoda přijímá parametr, který určuje reflektovaný typ a vrátí seznam dalších vlastností. K vytvoření objektů vlastností, které se mají vrátit, byste měli použít CreateProperty metodu. Delegáty můžete zadat při vytváření vlastnosti, která slouží jako přístupová objekt vlastnosti, a můžete vynechat jeden z přístupových objektů k vytvoření vlastnosti jen pro čtení nebo jen pro zápis. Všimněte si, že takové dummy vlastnosti nemají žádná metadata ani podporu CIL (Common Intermediate Language).

Warning

  • Při práci s kontexty reflexe buďte opatrní, protože objekty mohou v několika kontextech představovat stejný objekt reflexe. Pomocí metody MapType můžete získat verzi reflektovaného objektu v konkrétním kontextu reflexe.
  • Objekt CustomReflectionContext změní atributy vrácené konkrétním objektem reflexe, jako jsou například ty získané metodou GetCustomAttributes . Nemění data vlastních atributů vrácená metodou GetCustomAttributesData a tyto dva seznamy se neshodují při použití vlastního kontextu reflexe.

Následující příklad ukazuje, jak vytvořit podtřídu CustomReflectionContext a přidat vlastní atribut všem členům daného typu, jejichž názvy začínají písmeny "To".

Konstruktory

Name Description
CustomReflectionContext()

Inicializuje novou instanci CustomReflectionContext třídy.

CustomReflectionContext(ReflectionContext)

Inicializuje novou instanci CustomReflectionContext třídy se zadaným kontextem reflexe jako základ.

Metody

Name Description
AddProperties(Type)

Při přepsání v odvozené třídě poskytuje kolekci dalších vlastností pro zadaný typ, jak je znázorněno v tomto kontextu reflexe.

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

Vytvoří objekt, který představuje vlastnost, která se má přidat do typu, která se má použít s metodou AddProperties(Type) a pomocí zadaných vlastních atributů.

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

Vytvoří objekt, který představuje vlastnost, která se má přidat k typu, která se má použít s metodou AddProperties(Type) .

Equals(Object)

Určuje, zda je zadaný objekt roven aktuálnímu objektu.

(Zděděno od Object)
GetCustomAttributes(MemberInfo, IEnumerable<Object>)

Při přepsání v odvozené třídě poskytuje seznam vlastních atributů pro zadaný člen, jak je znázorněno v tomto kontextu reflexe.

GetCustomAttributes(ParameterInfo, IEnumerable<Object>)

Při přepsání v odvozené třídě poskytuje seznam vlastních atributů pro zadaný parametr, jak je znázorněno v tomto kontextu reflexe.

GetHashCode()

Slouží jako výchozí funkce hash.

(Zděděno od Object)
GetType()

Získá Type aktuální instance.

(Zděděno od Object)
GetTypeForObject(Object)

Získá reprezentaci typu zadaného objektu v tomto kontextu reflexe.

(Zděděno od ReflectionContext)
MapAssembly(Assembly)

Získá reprezentaci v tomto kontextu reflexe sestavení, které je reprezentováno objektem z jiného kontextu reflexe.

MapType(TypeInfo)

Získá reprezentaci v tomto kontextu reflexe typu reprezentovaný objektem z jiného kontextu reflexe.

MemberwiseClone()

Vytvoří mělkou kopii aktuálního Object.

(Zděděno od Object)
ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Platí pro