【问题标题】:Load assembly from full type name [duplicate]从完整类型名称加载程序集[重复]
【发布时间】:2014-07-03 19:58:00
【问题描述】:

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

仅动态加载。

【问题讨论】:

标签: c# .net-assembly


【解决方案1】:

是的,因为您的项目中有另一个程序集的引用,您可以从一个类型创建一个程序集对象并获取该类型的一些属性,例如:

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;

【讨论】:

  • 我不知道 Class1 作为类。我只知道它的名字。班级位于另一个项目中。
  • Class1 在 dll 中,在我的主应用程序文件夹中
  • 看看我的编辑,你可以使用Assembly.LoadFile()
  • 嗯,我自己的答案是使用 Assembly.LoadWithPatrialName("TestProject1.Class1");我说的对吗?
  • 我想加载没有dll文件名
【解决方案2】:

嗯,我自己的答案是使用

Assembly.LoadWithPatrialName("TestProject1.Class1");

我说的对吗?

【讨论】:

  • 现在已经过时了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-27
  • 1970-01-01
  • 2016-01-02
  • 1970-01-01
相关资源
最近更新 更多