私は抽象クラスStepと、XML文書に基づいてインスタンス化したい多くの子孫Stepクラスを持っています。私はXML文書クラス名による.Netオブジェクトのインスタンス化
ステップタイプ=「GenerateReport」 ....ステップタイプ=「PrintReport」 タイプに基づいて、特定のステップのクラスのインスタンスを作成したいこのよう
。 ...
クラス名(および理想的にはコンストラクタに渡すパラメータ)を指定してオブジェクトをインスタンス化するにはどうすればよいですか?
私は抽象クラスStepと、XML文書に基づいてインスタンス化したい多くの子孫Stepクラスを持っています。私はXML文書クラス名による.Netオブジェクトのインスタンス化
ステップタイプ=「GenerateReport」 ....ステップタイプ=「PrintReport」 タイプに基づいて、特定のステップのクラスのインスタンスを作成したいこのよう
。 ...
クラス名(および理想的にはコンストラクタに渡すパラメータ)を指定してオブジェクトをインスタンス化するにはどうすればよいですか?
最も簡単なオプションはType
とparams object[]
を受け入れるActivator.CreateInstance
過負荷です。 Type
の場合は、、時にはを使用することができますが、これはすべてのアセンブリ(現在のアセンブリと一部のシステムアセンブリのみ)をチェックするわけではありません。名前は、アセンブリ修飾されている場合、あなたはおそらくOKでしょう - しかし、それだけで名前空間修飾(すなわちフルネーム)であるならば、あなたはおそらくAssembly.GetType(string)
使用することをお勧めします - 詳細な回答のためのすなわち
Type type = typeof(SomeKnownTypeInTheSameAssembly).GetType(fullName);
object obj = Activator.CreateInstance(type, args);
私は、あなたは、単にActivator.CreateInstance
メソッドを使用したいと思う:
var object = Activator.CreateInstance(null, "Classname");
おかげ - これを治療をしました。 –