2016-03-22 22 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()方法?

THX

+2

您认为'typeof(object).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-返回null),[通过提供类名称作为字符串获取键入引用的程序集?](http://stackoverflow.com/questions/11994057/get-type-in​​-referenced-assembly-by-supplying-class-name-作为字符串)。类型不在该程序集中,或该程序集未加载。这个问题已经被问过很多次了。 – CodeCaster

回答

0

尝试这种 类型的myType = typeof运算(IMyInterface的).Assembly.GetType( “MyNameSpace.MyClass”);