2016-03-22 3 views
0

Я работаю над каким-то планировщиком, который получает имя класса из БД и затем выполняет метод этого класса.Как получить ссылку на класс по заданной строке

Проблема в том, что я не могу получить ссылку на класс.

То, что я в принципе хочу:

using MyNameSpace; 
... 
    Type myType = Type.GetType("MyNameSpace.MyClass"); 
    myInterface myObject = (myInterface)Activator.CreateInstance(myType); 
    myObject.Run(); 

Я знаю, что нужно имя сборки, так что я пытался что-то вроде этого:

Type myType = typeof(object).Assembly.GetType("MyNameSpace.MyClass"); 

Но тип всегда нуль.

Желаемый класс находится в том же решении, но в другом проекте. Как я могу получить ссылку, чтобы я мог выполнить метод run()?

ТНХ

+2

Что вы думаете 'typeof (объект) .Assembly' делает? Он вернет 'mscorlib', а не вашу ссылочную сборку. 'mscorlib' не содержит ваших типов. Используйте квалифицированное имя сборки, см. [Дубликат] (http://stackoverflow.com/questions/3512319/resolve-type-from-class-name-in-a-different-assembly). – CodeCaster

+0

Пример в «дубликате» не работает. Он просто работает с System.String, но не с моим собственным классом: Тип myType = Type.GetType («CSTurbo.AppWeb.Lib.Jobs.UpdateMetadataJob, AssemblyName»); – Dave

+1

Затем нажмите одну или две ссылки дальше или попробуйте выполнить поиск еще: [Type.GetType ("namespace.abClassName") возвращает null] (http://stackoverflow.com/questions/1825147/type-gettypenamespace-ab-classname- return-null), [Получить тип в ссылочной сборке, указав имя класса как строку?] (http://stackoverflow.com/questions/11994057/get-type-in-referenced-assembly-by-supply-class-name- а-строки). Либо тип не находится в этой сборке, либо сборка не загружена. Этот вопрос задавали много раз. – CodeCaster

ответ

0

попробовать это Тип MyType = TypeOf (IMyInterface) .Assembly.GetType ("MyNameSpace.MyClass");

 Смежные вопросы

  • Нет связанных вопросов^_^