Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A névtér osztályai System.Reflection és azok System.Typelehetővé teszik a betöltött szerelvények és a bennük definiált típusok, például osztályok, interfészek és értéktípusok (azaz struktúrák és enumerációk) információinak beszerzését. A reflexió használatával futásidőben is létrehozhat típuspéldányokat, és meghívhatja és elérheti őket.
A szerelvények modulokat tartalmaznak, a modulok típusokat, és a típusok tagokat. A tükröződés olyan objektumokat biztosít, amelyek szerelvényeket, modulokat és típusokat foglalnak össze. A tükröződés használatával dinamikusan létrehozhat egy típuspéldányt, megkötheti a típust egy meglévő objektumhoz, vagy lekérheti a típust egy meglévő objektumból. Ezután meghívhatja a típus metódusait, vagy hozzáférhet a mezőihez és tulajdonságaihoz. A tükröződés tipikus felhasználási módjai a következők:
- A szerelvényjegyzékben felsorolt szerelvények, betöltési modulok definiálására és betöltésére, valamint a szerelvény típusának megkeresésére és példányának létrehozására használható Assembly .
- Az Module olyan információk felfedezésére szolgál, mint például a modult és a modulban lévő osztályokat tartalmazó szerelvény. A modulban definiált összes globális vagy más, nem globális metódust is lekérheti.
- Olyan információk felderítésére használható ConstructorInfo , mint a konstruktor neve, paraméterei, hozzáférési módosítói (például
publicvagyprivate), és implementációjának részletei (példáulabstractvagyvirtual). A GetConstructors egy adott konstruktorának meghívásához használja a GetConstructor vagy Type metódust. - Olyan információk felderítésére használható MethodInfo , mint a metódus neve, visszatérési típusa, paraméterei, hozzáférési módosítói és implementációs részletei (például
abstractvagyvirtual) Egy speciális metódus meghívásához használja a GetMethods vagy GetMethod módszerét egy Type. - Olyan információk felderítésére használható FieldInfo , mint a mező neve, a hozzáférési módosítók és a megvalósítás részletei (például
static) és a mezőértékek lekérése vagy beállítása. - Olyan információk felderítésére használható EventInfo , mint a név, az eseménykezelő adattípusa, az egyéni attribútumok, a deklarálás típusa és az esemény tükrözött típusa, valamint eseménykezelők hozzáadása vagy eltávolítása.
- Olyan információk felderítésére használható PropertyInfo , mint a név, az adattípus, a deklarálás típusa, a tükrözött típus, valamint a tulajdonság írásvédett vagy írható állapota, valamint a tulajdonságértékek lekérése vagy beállítása.
- Olyan információk felderítésére szolgál ParameterInfo , mint a paraméter neve, adattípusa, hogy egy paraméter bemeneti vagy kimeneti paraméter-e, valamint a paraméter pozíciója egy metódus-aláírásban.
- Az egyéni attribútumokkal kapcsolatos információk felderítéséhez használja CustomAttributeData , amikor a MetadataLoadContext vagy csak tükröződési környezetben (.NET-keretrendszerben) dolgozik. CustomAttributeData lehetővé teszi az attribútumok vizsgálatát példányok létrehozása nélkül.
A névtér osztályai System.Reflection.Emit speciális tükröződési formát biztosítanak, amely lehetővé teszi a típusok futásidőben történő összeállítását.
A tükröződés típusböngészők létrehozására is használható, amelyek lehetővé teszik a felhasználók számára a típusok kiválasztását, majd az ezekre vonatkozó információk megtekintését.
A tükröződésnek más felhasználási módjai is vannak. A JScripthez hasonló nyelvek fordítói a jeltáblák létrehozására használják a tükröződést. A névtér osztályai tükröződés System.Runtime.Serialization használatával férnek hozzá az adatokhoz, és meghatározzák, hogy mely mezőket kell őrizni. A névtér osztályai System.Runtime.Remoting közvetett módon, szerializálással használják a tükröződést.
A futásidejű típusok reflektálása
A reflexió osztályokat biztosít, például Type és MethodInfo, amelyek típusokat, tagokat, paramétereket és más kódentititásokat jelölnek. A tükröződés használatakor azonban nem közvetlenül ezekkel az osztályokkal dolgozik, amelyek többsége absztrakt (MustInherit a Visual Basicben). Ehelyett a közös nyelvi futtatókörnyezet (CLR) által biztosított típusokkal dolgozik.
Ha például a C# typeof operátortGetType (a Visual Basicben) használja egy Type objektum beszerzéséhez, az objektum valójában egy RuntimeType.
RuntimeType a Type származéka, és minden absztrakt módszerhez implementációkat biztosít.
Ezek a futtatókörnyezeti osztályok internal (Friend a Visual Basicben). A rendszer nem külön dokumentálja őket az alaposztályoktól, mivel viselkedésüket az alaposztály dokumentációja ismerteti.