在.Net中运行时加载dll并创建一个类

时间:2013-04-16 06:54:32

标签: .net c#-4.0

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

2 个答案:

答案 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" });