2つのプロジェクトを含むソリューションがあります。まず、私のシナリオについて説明します。プロジェクト1:私が興味を持っている次の2つのプロパティとメソッドを持つMyBaseClassを呼び出す基本クラスを保持します。
TypeToLoad-単純なget/set機能でインスタンス化するクラスを継承した静的文字列プロパティ。
インスタンス-次のコード行でTypeToLoadで指定されたタイプのMyBaseClassインスタンスを返す静的プロパティ。
public static MyBaseClass Instance{
return (MyBaseClass)Activator.CreateInstance(Type.typeof(TypeToLoad));
}
2番目のプロジェクトでは、次のようにMyBaseClassを継承します(もちろん、適切な名前空間と参照が追加されています)。
public class MyInheritClass : MyBaseClass {
//implements all other functions of MyBaseClass;
}
MyInheritClassと同じプロジェクトにある他のコードファイルの1つに、次のコード行があります。
Type myType = Type.typeof("MyInheritClass"); //returns the correct "Type"
MyBaseClass.TypeToLoad = "MyInheritClass";
MyBaseClass myInstance = MyBaseClass.Instance; //Errors... because Type.typeof(...) could not resolve "MyInheritClass".
MyInheritClassコードファイルをMyBaseClassと同じプロジェクトに移動すると、コードは正常に実行されます。
私の質問は、同じプロジェクトにこれら2つのクラス(ベースDLLクラスライブラリのMyBaseClassと別のプロジェクトのMyInheritClass)を持たなくても、MyBaseClass.TypeToLoad = "MyInheritClass"を設定して、MyBaseClass.Instanceを使用してMyInheritClassのインスタンスを作成する方法はありますか? MyBaseclass DLLライブラリを参照しています)?
リフレクション、アクティベーターを検索しようとしましたが、探しているものが見つかりませんでした。たぶん私はこれの正しい用語を知りません。