Я пытаюсь выполнить автоматическое подключение моего приложения с помощью Autofac. Все хорошо, кроме того, что у меня есть абстрактный универсальный тип, такой как:
public abstract class Transformer<TModel>
{
// Some abstract methods
}
С ним реализовано как:
public class EventTransformer : Transformer<Event>
{
// implementation of methods
}
Я автоматически подключаю приложение:
builder.RegisterAssemblyTypes(typeof (MyAssemblyName).Assembly)
.InstancePerLifetimeScope();
Затем Autofac выдаст ошибку при разрешении этого типа класса:
public class RandomClass<TModel>
{
public RandomClass(Transformer<TModel> transformer()
{
// Constructor code
}
}
Я получаю ошибку ниже (упрощенно). Я могу зарегистрировать EventTransformer вручную как Transformer , и все работает отлично, но я не хочу регистрировать его вручную, я должен иметь возможность сделать это автоматически, чтобы я мог просто создать новый класс, и он сразу применение.
The requested service Transformer`1[[Event]]' has not been registered. To avoid this exception, either register a component to provide the service, check for service registration using IsRegistered(), or use the ResolveOptional() method to resolve an optional dependency.
Я пытался использовать метод .AsImplementedInterfaces () при регистрации классов, но, похоже, он не работал.
Так, что я должен сделать, чтобы достигнуть этого? Также, что касается бонусных баллов, у меня нет возможности узнать, что регистрирует Autofac и как он это регистрирует. Есть ли способ сделать это?