0

我想在运行时从另一个应用程序加载一个 dll,但同时,我需要创建一个在 dll 中实现的类的实例。能做到吗?我可以在运行时加载 dll,并且有一些示例,但是我如何在没有加载 dll 的情况下调用一个类?不会编译,对吧?

4

2 回答 2

1

它会编译。最简单的方法是与您的应用程序和加载的 dll 具有通用接口。您可以在此处找到热执行此操作:C# - 加载程序集、查找类和调用 Run() 方法的正确方法

但是如果你没有通用接口仍然可以CreateInstance,然后找到你需要的所有方法(下面的例子是所有方法):

MethodInfo[] methodInfos = Type.GetType(selectedObjcClass) .GetMethods(BindingFlags.Public | BindingFlags.Instance);

然后像这样调用选定的一个Invoke

method.Invoke(selectedObjcClass, params...);   
于 2013-04-16T07:03:33.213 回答
1

您可以在运行时加载 dll。

像这样:

//load assembly
var ass = Assembly.LoadFile("ADll.dll");

//get types from assemblt
var typesInAssembly = ass.GetTypes();

var type = typesInAssembly.First(/*select one*/);

//create instance
var object = Activator.CreateInstance(type, new object [] { "arguments" });
于 2013-04-16T07:03:56.730 回答