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