クラスの動的生成あれこれ(その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;