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