0

我有一个将采用泛型类型的接口T

 internal interface IQuestion<T> where T : IWithOptionsId
 {
     Task<T> Provide(Guid id);
 }

接下来我将在多个类中实现这个接口。例如

public class SomeProvider : IQuestion<OptionsClass>
{
    private readonly IRepository _repository;

    public SomeProvider(IRepository repository)
    {

        _repository = repository;
    }

    public async Task<OptionsClass> Provide(Guid id)

    ...
}

要使用 outofac 注册它,我使用了这个

Autofac.RegisterAssemblyTypes(
        Assembly.GetExecutingAssembly())
    .AsImplementedInterfaces()
    .AsClosedTypesOf(typeof(IQuestion<>));

我的问题是这个。我有这个接口的多个实例。如何在运行时访问不同的实例?如果我IQuestion<T>Options上课并且也会Answer上课,我如何在运行时获取这些类的实例?

4

1 回答 1

1

我很确定您可以只注入实例本身。不是很好的做法,但它应该有效:

public SomeClass(SomeProvider<OptionsClass> provider)

您也可以在注册时尝试创建一个命名实例,然后注入它。看到这个这个

于 2018-10-28T13:24:55.893 回答