1

同じメソッドを持つ複数のクラスをインスタンス化できる方法を探しています。

クラスの名前を文字列として渡すことができる何かを探しています。クラスを正しくインスタンス化していないため、コンパイル中に実行されません。

私はこのようなことをしていますが、私は何かが欠けていることを知っています。誰かが助けてくれれば幸いです。

public class useMyClass{
   public runMyClass(string st1, list<string> mysts, string myClass){
       classProcessor cp = new myClass1(); // this works
       classProcessor cp = new myClass2(); // this works

       // Here I just want to be able to do using the string variable myClass (myClass1 or myClass2 ) could be the string value
       //classProcessor cp = new Class(myClass);

       // This does not work always null
       classProcessor cp = (classProcessor)System.Reflection.Assembly.GetExecutingAssembly().CreateInstance(myClass);
       cp.myMethod(st1,mysts);
   }
}

ファイル 1: classProcessor.cs

public interface classProccessor{
    public void myMethod(string st1, list<string> mysts);
}

ファイル 2: myClass1.cs

public class myclass1 : classProccessor{ 
    public void myMethod(string st1, list<string> mysts){
      //do something;
    }
}

file3: myClass2.cs

public class myclass2 : classProccessor{ 
    void myMethod(string st1, list<string> mysts){
        // do something different;
    }
}

インターフェイスを使用して、クラスの文字列名を使用してクラスの新しいインスタンスを作成するにはどうすればよいですか? 私は単純なものが欠けているに違いないことを知っています。

4

1 に答える 1