1. ホーム
  2. c#

[解決済み] 文字列名でクラスをインスタンス化するには?

2023-06-29 13:48:54

質問

抽象クラスがあり、それを継承するクラスに継承させたいのですが、どうすればよいですか?

子クラスの名前を文字列として持っています。

これ以外に...

String childClassString;
MyAbstractClass myObject;

if (childClassString = "myExtenedObjectA")
    myObject = new ExtenedObjectA();
if (childClassString = "myExtenedObjectB")
    myObject = new ExtenedObjectB();

どうすればいいのでしょうか?基本的に、ここでif文を取り除くにはどうすればよいのでしょうか?

どのように解決するのですか?

Activator.CreateInstance()を見てください。

myObject = (MyAbstractClass)Activator.CreateInstance("AssemblyName", "TypeName");

または

var type = Type.GetType("MyFullyQualifiedTypeName");
var myObject = (MyAbstractClass)Activator.CreateInstance(type);