我正在为我的 DI 容器使用 SimpleInjector。我有一个带有 2 个类型参数的开放通用接口
public interface IAdapter<TRepository, TEntity>
where TRepository : AbstractRepository
where TEntity : AbstractModel, new()
{
}
我在容器中注册为:
container.RegisterOpenGeneric(typeof(IAdapter<,>),
typeof(Adapter<,>));
我想根据提供的类型来装饰 IAdapter。例如(我知道这段代码无效,但它演示了我正在尝试做的事情)
class RepositoryX : AbstractRepository { }
class RepositoryY : AbstractRepository { }
class RepositoryZ : AbstractRepository { }
container.RegisterDecorator(typeof(IAdapter<RepositoryY,>),
typeof(SpecificAdapterDecorator<,>));
container.RegisterDecorator(typeof(IAdapter<[RepositoryX|RepositoryZ],>),
typeof(GeneralAdapterDecorator<,>));
有没有办法做到这一点?