- bon
- 会議室デビュー日: 2003/08/12
- 投稿数: 2
|
投稿日時: 2003-08-12 21:24
いつもお世話になっております。
C#で動的にクラスのインスタンス化を行おうとしているのですが、
方法がわからず実装できておりません。
通常クラス名が静的に決まっていたら
(クラス名) Instance1 = new (クラス名)();
と記述すればよろしいかと思います。
ですが今回実装したいと考えているのは、
クラス名を定義ファイル等から取得し、
そのクラスをインスタンス化したいと考えおります。
その方法をどなたかご教授お願いできますでしょうか。
|
- yoo
- 会議室デビュー日: 2003/04/03
- 投稿数: 12
|
投稿日時: 2003-08-12 22:16
Activatorを使ってはどうでしょうか?
System.Activator.CreateInstnce(アセンブリ名,Type名).Unwrap();
UnwrapメソッドがSystem.Objectを返してきます。
またはAppDomainクラスか。Activatorとすることは同じかもしれませんが。
|
- mei
- 大ベテラン
- 会議室デビュー日: 2003/04/08
- 投稿数: 114
|
投稿日時: 2003-08-12 22:39
既に回答は出ていますが、実例を。
コード: |
|
using System;
using System.Runtime.Remoting;
using System.Reflection;
class MyClass {
[STAThread]
static void Main(string[] args) {
ObjectHandle h = Activator.CreateInstanceFrom(@"C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.Drawing.dll", "System.Drawing.Size");
Console.WriteLine("- Activator -");
Console.WriteLine(h.GetType());
Console.WriteLine(h.Unwrap().GetType());
Console.WriteLine("- Assembly -");
Assembly asm = Assembly.LoadFrom(@"C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.Drawing.dll");
object o = asm.CreateInstance("System.Drawing.Size");
Console.WriteLine(o.GetType());
}
}
|
|
- bon
- 会議室デビュー日: 2003/08/12
- 投稿数: 2
|
投稿日時: 2003-08-12 23:05
yoo様、mei様
回答ありがとうございます。
サンプルコードもつけていただき、
とても助かりました!!
|