我想在运行时从其他应用程序加载一个DLL,但同时,我需要创建一个在dll中实现的类的实例。可以吗?我可以在运行时加载dll,并且有一些示例,但是如何在没有加载dll的情况下调用类?不会编译,对吧?
答案 0 :(得分:1)
它会编译。最简单的方法是与您的应用程序和加载的DLL具有通用接口。很高兴你可以在这里找到:C# - Correct Way to Load Assembly, Find Class and Call Run() Method。
但如果你还没有通用界面,你可以CreateInstance
,然后找到你需要的所有方法(以下示例适用于所有方法):
MethodInfo[] methodInfos = Type.GetType(selectedObjcClass) .GetMethods(BindingFlags.Public | BindingFlags.Instance);
然后使用Invoke
调用所选的一个,如下所示:
method.Invoke(selectedObjcClass, params...);
答案 1 :(得分: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" });