フレームワークのIOCオプションとしてSimpleInjector IOCフレームワークも使用するようにSharpRepositoryプロジェクトを構成しようとしていますが、コードの一部を移植することに行き詰まっています。SimpleInjector を使用して <> ジェネリック インターフェイスを渡す方法がわかりません。
2番目の問題/質問は、単純なインジェクターを使用してコンテキストに渡される汎用引数を取得する方法です。
public static void BindSharpRepository(this IKernel kernel,
ISharpRepositoryConfiguration configuration)
{
kernel.Bind(typeof (IRepository<>)).ToMethod(context =>
{
var genericArgs = context.Request.Service.GetGenericArguments();
return RepositoryFactory.GetInstance(genericArgs[0], configuration);
});
kernel.Bind(typeof(IRepository<,>)).ToMethod(context =>
{
var genericArgs = context.Request.Service.GetGenericArguments();
return RepositoryFactory.GetInstance(genericArgs[0],
genericArgs[1], configuration);
});
kernel.Bind(typeof(ICompoundKeyRepository<,,>)).ToMethod(context =>
{
var genericArgs = context.Request.Service.GetGenericArguments();
return RepositoryFactory.GetInstance(genericArgs[0], genericArgs[1],
genericArgs[2], configuration);
});
}