1

我有一个 .dll 库,我正在编写它与专有 COM 程序集的接口。我的目标是在构建完成后在线发布我的作品,但是我需要删除 COM 程序集作为项目参考,以避免分发此专有 dll。所以我想要做的是在运行时动态加载程序集,并在我需要的地方调用方法。传统上,我对未知类型使用对象反射,但这有时会变慢,并且涉及几个丑陋的实例。在 .NET 4.0 中,有没有一种方法可以干净地获取所有方法并在运行时将它们扔到动态类/接口中?

我目前正在得到这样的对象:

Type myClassType = Type.GetTypeFromProgID("MyClass.Myclass.1");
object classObj = Activator.CreateInstance(myClassType);

我以为我可以使用 Type.GetMethods(),但它只返回通用的(Equals、ToString、GetLifetime...等)。我知道该类使用一个接口,所以我也尝试研究动态加载该接口。这让我想到了 Reflection.Emit 和 Microsoft.Xrm.Sdk,到目前为止我还无法理解。

如果有一种方法可以让我调用方法而无需每隔几行抛出一堆 BindingFlags,我将不胜感激朝着正确的方向轻推

如果有帮助的话,我确实有类和接口的 GUID。

4

1 回答 1

3

如果我处于您的情况(并且如果我正确理解了问题):
我会将接口库(DLL)与实现库(DLL)分开
然后实现库将被动态加载并引用我的主要源代码接口库将被编译

Type myClassType = Type.GetTypeFromProgID("MyClass.Myclass.1");
myClassIntrface classObj = 
   Activator.CreateInstance(myClassType) as myClassIntrface;
classObj.CallSomeInterfaceMethod();

希望这对朋友有用。

于 2013-03-28T17:54:31.257 回答