2014-05-15 43 views
0

我有库TestProject1。命名空间 - TestProject1。 这里我有课 - Class1。 我可以使用完整的类名称(TestProject1.Class1)从另一个项目加载它吗? (dll在另一个项目的文件夹中)。 我想看看解决方案,而不会抛出文件夹中的所有“* .dll”文件。从全类型名称加载程序集

只有动态负载。

+0

检查此帖:http://stackoverflow.com/questions/465488/can-i-load-a-net-assembly-at-runtime-and-instantiate-a-type-knowing-only-the-na它包括动态加载和类型激活/构建。 – Stefan

回答

1

是的,因为你有这样做的另一个组件项目中的引用,您可以创建一个从类型Assembly对象并获取这种类型的一些性质,样品:

Assembly asm = Assembly.GetAssembly(typeof(Class1)); 

string fullName = asm.FullName; 

如果您需要加载不被引用到您的项目组件,您可以使用Assembly.LoadFile方法,通过DLL的路径,样品:

var asm = System.Reflection.Assembly.LoadFile("C:\\project.dll"); 

// Get the type to use. 
Type class1 = asm.GetType("Class1"); 

// Get the method to call. 
MethodInfo myMethod = class1.GetMethod("MethodA"); 

// Create an instance. 
object obj = Activator.CreateInstance(class1); 

而且随着asm装配对象的工作,你会不会有一个强类型的代码,但你可以使用Reflection使用此程序集中的类型。

请记住,包括反射命名空间:

using System.Reflection; 
+0

我不了解Class1作为类。我只知道它的名字。班级正在另一个项目中。 –

+0

Class1位于dll中,位于我的主应用程序文件夹中 –

+0

查看我的编辑,您可以使用'Assembly.LoadFile()'。 –

0

埃姆,我自己的答案是使用

Assembly.LoadWithPatrialName("TestProject1.Class1"); 

是吗?

相关问题