2009-06-02 15 views
4

私は抽象クラスStepと、XML文書に基づいてインスタンス化したい多くの子孫Stepクラスを持っています。私はXML文書クラス名による.Netオブジェクトのインスタンス化

ステップタイプ=「GenerateReport」 ....ステップタイプ=「PrintReport」 タイプに基づいて、特定のステップのクラスのインスタンスを作成したいこのよう

。 ...

クラス名(および理想的にはコンストラクタに渡すパラメータ)を指定してオブジェクトをインスタンス化するにはどうすればよいですか?

答えて

5

最も簡単なオプションはTypeparams object[]を受け入れるActivator.CreateInstance過負荷です。 Typeの場合は、、時にはを使用することができますが、これはすべてのアセンブリ(現在のアセンブリと一部のシステムアセンブリのみ)をチェックするわけではありません。名前は、アセンブリ修飾されている場合、あなたはおそらくOKでしょう - しかし、それだけで名前空間修飾(すなわちフルネーム)であるならば、あなたはおそらくAssembly.GetType(string)使用することをお勧めします - 詳細な回答のためのすなわち

Type type = typeof(SomeKnownTypeInTheSameAssembly).GetType(fullName); 
object obj = Activator.CreateInstance(type, args); 
+0

おかげ - これを治療をしました。 –

6

私は、あなたは、単にActivator.CreateInstanceメソッドを使用したいと思う:

var object = Activator.CreateInstance(null, "Classname"); 
関連する問題