如何使用“ Autofac”从第三方库注入互操作对象

时间:2019-03-17 10:15:34

标签: c# oop interface com autofac

第三方软件提供了名为ProxyGW的库

这是他们的界面代码

public interface ProxyGW : IProxyGW10, _ProxyGWEvents_Event
{
}

这里是界面_ProxyGWEvents_Event

public interface _ProxyGWEvents_Event
{
    event _ProxyGWEvents_onConnectSucceededEventHandler onConnectSucceeded;
}

这是IProxyGW10界面,位于8,7,6 ....界面!

public interface IProxyGW10 : IProxyGW9
{}

我正在使用Autofac来获取依赖项注入能力。我已经写成类ProxyGWModule来注册组件

using Autofac;
using ProxyGWLib;

public class ProxyGWModule: Module
{
    protected override void Load(ContainerBuilder builder)
    {
        builder.Register(ProxyGW);// I get error here
    }
}

错误

  

“ ProxyGW”是一种类型,在给定上下文ProxyGWModule.cs中无效

如果我喜欢这样的话,错误就会出现

 ProxyGW proxygw = new ProxyGW();
 builder.RegisterInstance(proxygw).As<IProxyGW10>(); //which interface shall be part of

这是正确的方法吗?如果是,_ProxyGWEvents_Event界面会怎样?我想访问_ProxyGWEvents_Event

中的所有事件

我尝试如下

 builder.RegisterInstance(ProxyGWClass);

错误

  

互操作类型'ProxyGWClass'无法嵌入。请改用适用的界面。 ProxyGWModule.cs

根类如下所示。 IProxyGW9,IProxyGW8 .....是不同的版本。显然,我们只使用其中之一。

 public class ProxyGWClass : IProxyGW10, ProxyGW, _ProxyGWEvents_Event, IProxyGW9, IProxyGW8, IProxyGW7, IProxyGW6, IProxyGW5, IProxyGW4, IProxyGW3, IProxyGW2 {}

所以,下面没有显示任何错误

 ProxyGW proxygw = new ProxyGW();
 builder.RegisterInstance(proxygw).As<IProxyGW9>().As<_ProxyGWEvents_Event>();

0 个答案:

没有答案