Как добавить объекты взаимодействия из сторонней библиотеки с помощью «Autofac» - PullRequest
1 голос
/ 17 марта 2019

Программное обеспечение сторонних производителей предоставлено библиотекой под названием 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
    }
}

Error

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);

Error

Тип взаимодействия 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>();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...