我有一个.dll库,我正在编写与专有COM程序集的接口。我的目标是在线发布我的工作一旦建成,但是我需要删除COM程序集作为项目参考,以避免分发这个专有的dll。所以我想要做的是在运行时动态加载程序集,并在我需要的地方调用方法。传统上,我对未知类型使用对象反射,但是这有时会变得很慢,并且涉及到几个丑陋的实例化。在。net 4.0中,是否有一种方法可以在运行时干净地获取所有方法并将它们放入动态类/接口中?
我现在得到的对象是这样的:
Type myClassType = Type.GetTypeFromProgID("MyClass.Myclass.1");
object classObj = Activator.CreateInstance(myClassType);
我以为我可以使用Type.GetMethods(),但它只返回泛型的(Equals, ToString, GetLifetime…等)。我知道类使用接口,所以我也尝试动态加载接口。这让我想到了反思。Emit和Microsoft.Xrm。Sdk,到目前为止我还不能理解。
如果有一种方法可以让我调用方法而不需要每隔几行抛出一堆BindingFlags,我将非常感谢在正确方向上的推动
如果有帮助的话,我确实有类和接口的GUID。
如果我在你的情况下(如果我正确理解了问题):
我会将接口库(DLL)与实现库(DLL)分开
然后,实现库将被动态加载,我的主要源代码引用的接口库将被编译
Type myClassType = Type.GetTypeFromProgID("MyClass.Myclass.1");
myClassIntrface classObj =
Activator.CreateInstance(myClassType) as myClassIntrface;
classObj.CallSomeInterfaceMethod();
希望对大家有用。