1
我想配置SharpRepository项目也使用SimpleInjector IOC框架作为框架中的IOC选项,但我坚持移植一些代码。无法弄清楚如何使用SimpleInjector传入<>通用接口。在Simple Injector中绑定一个开放的泛型类型到一个方法
第二个问题/问题是如何使用简单的注入器将泛型参数传递到上下文中。
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);
});
}
在创建的typeof(ConfigurationBasedRepository <>)而不是使用RepositoryFactory你可以使用第二种方法。 –
'ConfigurationBasedRepository <>'具有多个构造函数,它们具有基本类型。最好的方法是使用一个(默认)构造函数在组合根中创建派生类,然后注册该类型。 – Steven