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<,>));
これを行う方法はありますか?