У меня есть решение, которое содержит два проекта. Сначала позвольте мне описать мой сценарий. Проект 1: содержит вызовы базового класса MyBaseClass со следующими двумя интересующими меня свойствами и методом:
TypeToLoad — статическое строковое свойство, унаследованный класс которого необходимо создать с помощью простой функции получения/установки.
Экземпляр — статическое свойство, которое возвращает экземпляр MyBaseClass типа, указанного в TypeToLoad, со следующими строками кода:
public static MyBaseClass Instance{
return (MyBaseClass)Activator.CreateInstance(Type.typeof(TypeToLoad));
}
теперь во втором проекте я наследую MyBaseClass следующим образом (конечно, было добавлено правильное пространство имен и ссылки).
public class MyInheritClass : MyBaseClass {
//implements all other functions of MyBaseClass;
}
и один из моих других файлов кода в том же проекте, что и MyInheritClass, у меня есть следующие строки кода:
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, код работает нормально.
Мой вопрос в том, есть ли способ создать экземпляр MyInheritClass с использованием MyBaseClass.Instance, установив MyBaseClass.TypeToLoad = "MyInheritClass" без необходимости иметь эти два класса в одном проекте (MyBaseClass в базовой библиотеке классов DLL и MyInheritClass в другом проекте ссылка на библиотеку DLL MyBaseclass)?
Я пытался искать отражения, активатор, но не смог найти то, что искал. Может быть, я не знаю правильную терминологию для этого.