![](/img/trans.png)
[英]Calling a dynamically loaded DLL method through reflection, but the target references a DLL
[英]How to calling a function in a .net dll through an interface loaded through reflection
您好我会尽力解释一下。
基本上,我使用Assembly.LoadFile通过反射加载库。
从那里我有一个接口IFace,它定义了一个返回字符串数组的方法“GetStrings”。
动态加载的DLL有一个名为“Class1”的类,它实现了IFace。
我需要一种通过动态加载的lib调用这个interfaced方法的方法。 我想保持紧密耦合,这让我想知道该怎么做。 我知道我可以使用MethodInvoker来调用该方法,但我正在尝试找到一种方法,我可以做这样的事情:
IFace obj = (IFace)ReflectionAssembly.Class1;
string[] strs = obj.GetStrings();
有任何想法吗?
就像是:
var assm = Assembly.Load("ClassLibrary1");
var type = assm.GetType("ClassLibrary1.Class1");
var instance = Activator.CreateInstance(type) as IFace;
string[] strings = instance.GetStrings();
使用Assembly.CreateInstance()创建对象,传递一个“众所周知的名称”。 将返回值转换为IFace,其余的很容易。 哦,不要使用LoadFile,请使用LoadFrom。
一旦你有了反射类型(使用像Assembly.GetType这样的东西),你可以使用Activator.CreateInstance :
IFace obj = (IFace)Activator.CreateInstance(class1Type);
string[] strs = obj.GetStrings();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.