上のC#のリフレクション

 

使用実質的に反射された概要:
実施例列挙された定義およびアセンブリローディングアセンブリ、ロードモジュールを使用して1、およびプログラムからの検索の種類は、アセンブリに焦点を当てて、リストタイプを作成します。CreateInstanceを
アセンブリのようなモジュール理解モジュールとモジュールを使用することを含む2は、また、すべてのモジュールで定義されたグローバル方法、または他の特定の非大域法を得ることができます。
図3に示すように、名前は、(抽象的、または仮想として)ConstructorInfoコンストラクタパラメータ、アクセス修飾子(例えば、パブリックまたはプライベート)と実装の詳細を理解するために使用されるように。
図4に示すように、方法METHODINFO理解、戻り型、パラメータ、アクセス修飾子(例えば、パブリックまたはプライベート)と実装の詳細(例えばabstratcまたは仮想)の名前などを使用。
5、のFieldInfo、(例えば、パブリックまたはプライベート)アクセス修飾子と実装の詳細(例えば、静的)などを理解し、取得または設定フィールド値には、フィールドの名前を使用。
6、イベントハンドラを追加または削除するには、イベントハンドラのデータ型、カスタム属性、タイプと反射型を宣言するなど事件について名前EventInfoを使用。
図7は、PropertyInfoは、name属性、データ型、宣言された型、反射型または書き込みおよび読み取り専用の状態を知って使用して、プロパティ値を取得または設定します。
8、名前、データタイプ、入力パラメータ又は出力パラメータ、およびメソッドのシグネチャの位置パラメータ等を知るParameterInfoパラメータを使用して。
するSystem.Reflection
のSystem.Type
System.Reflection.Assembly

主に使用される反射型
のSystem.Typeクラス-このクラスによって与えられる任意のデータ型の情報にアクセスすることができ
、アセンブリ与えられた情報にアクセスするために使用することができ、これはアセンブリロードされ、又は- System.Reflection.Assemblyクラスをプログラムに。

System.Typeクラス
のSystem.Typeクラスは、反射において中心的な役割を果たしています。それは抽象基底クラスで、各データタイプに対応するタイプが派生クラスを持っている。しかし、派生クラスは、の種類に関するすべての情報を見つけるために、我々はメソッド、フィールド、プロパティを使用することをオブジェクト

:タイプ3の種類を所与の参照は、通常の方法有し得る
、1 typeof演算子
タイプT = typeof演算(文字列);
2、メソッドGetTypeオブジェクト()メソッドを使用して
、Sring S = "lslslを"
)(タイプT = s.GetType ;
3、また)(静的メソッドをメソッドGetType型クラスを使用することができる
Type.GetType T =(「可能System.String」)を入力し、
除去のT型参照文字列の後に、我々はtでの構造の種類を検出することができます。

文字列のn = "";
入力T = n.GetType()。
foreachの(t.GetMembersでのMemberInfoマイル())
{
Console.WriteLineを( "{0} / {1}"、mi.MemberType、mi.Name)。
}

Type属性のクラス
名データ・タイプ名
(名前空間名を含む)完全修飾名のフルネームデータ型
の名前空間の名前空間定義のデータ型の名前
抽象型はIsAbstractある場合
でIsArrayが配列であるかどうかを
クラスかどうかIsClass
列挙するかどうかIsEnum
IsPublicがあるかどうか公共
IsSealed密封されたクラスがあるかどうかを
値の型がIsValueTypeであるかどうか

メソッドタイプクラス
GetConstructor()、GetConstructors()は、情報取得のためのConstructorInfo型、クラスのコンストラクタを返し
のGetEvent()、GetEventsを()イベント・クラスの情報を取得するために、EventInfo型を返し
GetFieldの()は、れるGetFields ()のFieldInfo型はクラスのフィールドを取得するために使用される(メンバ変数)情報を返す
タイプのInterfaceInfo GETINTERFACE()、GetInterfacesメソッド()戻り、クラスが実装するインタフェースについての情報取得するために使用される
)GetMemberを(GetMembers()、のMemberInfo型を返しますクラスのすべてのメンバーが情報取得するために使用
getMethod()メソッド、GetMethods()METHODINFO型を返すを、クラスの情報を得る方法
GetProterty()、GetPropertiesの()は、情報のクラスのプロパティ取得するために使用PropertyInfo型返し
缶これらのメンバー、InvokeMemberタイプ()メソッドを呼び出す方法を呼び出す、またはのMemberInfo、PropertyInfoとのinvoke()メソッドの他のクラスを呼び出します。

おすすめ

転載: www.cnblogs.com/mantishell/p/12076392.html