Как настроить контейнер Autofac, чтобы он разрешал зависимости службы WCF на основе значений свойств параметра-операции (объекта запроса)?Autofac WCF Integration - разрешать зависимости на основе данных запроса
Например, с учетом этого контрактом данных ...
[DataContract]
public class MyRequest
{
[DataMember]
public bool MyBool { get; set; }
}
это WCF сервис ...
public class MyWcfService : IWcfService
{
private IService m_service;
public MyWcfService(IService service)
{
m_service = service;
}
public virtual MyResponse Operation(MyRequest request) { }
}
и эта зависимость ...
public interface IService { }
public class TypeA : IService { }
public class TypeB : IService { }
Я хотел бы контейнер для разрешения TypeA, если MyBool равен true и TypeB в противном случае. Доступна ли эта функция? Должен ли я относиться к проблеме по-другому?
Ограничения:
- Избежание пакет Autofac.Extras.Multitenant является плюсом.
-
Также необходимо сохранить подпись конструктора службы без изменений.(см. Мой ответ ниже)
Спасибо @Alexandr. Ваш ответ выглядит как работающий, и я предпочитаю его кодировать мою собственную фабрику. Тем не менее, я хотел бы сохранить подпись конструктора, так как это связано с тем, что изменение приведет к нарушению моих тестов. Я добавляю это ограничение к вопросу. И я также не поклонник смешивания логики приложений и разрешения зависимостей в одном классе. Каковы другие варианты, которые вы имели в виду? – xdarsie
К сожалению, я не проверял ссылку Метаданные. Дайте мне сек. – xdarsie
Хорошо, прочитайте, аналогичная концепция. Пока лучшее решение, но я не люблю его. – xdarsie