У меня есть решение, которое содержит два проекта. Прежде всего позвольте мне описать мой сценарий. Проект 1: содержит базовый класс вызывает MyBaseClass со следующих два собственности и методом, который я заинтересован в:Activator.CreateInstance с унаследованным классом не в том же проекте
TypeToLoad - статическая строка свойства которого унаследовал класс для создания экземпляра с простой получением/установкой функциональностью.
Instance - статическое свойство, которое возвращает экземпляр 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)?
Я попытался найти отражения, Активатор, но не смог найти то, что искал. Может быть, я не знаю правильной терминологии для этого.
Кстати, вы действительно должны использовать дескриптивные теги, такие как [tag: .net] или [tag: C#].Если вы это сделаете, вы, скорее всего, получите ответ гораздо раньше. – svick