从完整类型名称加载程序集

时间:2014-05-15 11:35:53

标签: c# .net-assembly

我有图书馆TestProject1。命名空间 - TestProject1。 我在这里上课 - Class1。 我可以使用完整的类名(TestProject1.Class1)从另一个项目加载它吗? (dll在另一个项目的文件夹中)。 我希望看到解决方案,而不是将所有“* .dll”文件放在文件夹中。

仅动态加载。

2 个答案:

答案 0 :(得分:2)

是的,因为你在项目中有这个另一个程序集的引用,你可以从一个类型创建一个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;

答案 1 :(得分:0)

嗯,我自己的答案是使用

Assembly.LoadWithPatrialName("TestProject1.Class1");

我是对的吗?