クラスの動的生成あれこれ(その0)
C#のリフレクションは強力すぎる。MSDNを読むと、こんなこともできるんかーってなことが余りにも多すぎて、覚えるのも一苦労である。
以下、自分で試した、サンプルである。
生成するクラス名はたいがいCである。
- Activator.CreateInstance (Type) のサンプル
デフォルトコンストラクタのみ
C c = System.Activator.CreateInstance(typeof(C)) as C;
- Activator.CreateInstance (String, String) のサンプル
デフォルトコンストラクタのみ
// 指定したAssembly内のクラスを取得する場合
System.Reflection.Assembly a =
System.Reflection.Assembly.LoadFrom(@"D:\プログラム\c_sharp\sample_Activator\bin\Debug\sample_Activator.exe");
System.Runtime.Remoting.ObjectHandle objHandle = System.Activator.CreateInstance(a.FullName,"NameSpace.C");// 現在実行中のAssembly内のクラスを取得する場合
System.Runtime.Remoting.ObjectHandle objHandle = System.Activator.CreateInstance(null,"NameSpace.C");// クラスCを取得
C c = objHandle.Unwrap() as C;