这是 Michah Conrad 的CacheManager库。在他的示例中,他使用 CacheFactory.Build 方法创建了一个缓存管理器,如下所示:
public class WebApiApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
GlobalConfiguration.Configure(WebApiConfig.Register);
var container = new UnityContainer();
GlobalConfiguration.Configuration.DependencyResolver = new UnityDependencyResolver(container);
var cache = CacheFactory.Build("todos", settings =>
{
settings
.WithSystemRuntimeCacheHandle("inprocess");
});
container.RegisterInstance(cache);
}
}
我的问题是,是否可以注册 ICacheManger 接口,以便 IoC 容器自动创建任何类型的任何属性依赖项?
说我有这门课
public class MyClass
{
[Inject]
public ICacheManager<string> StringCacheManager { get; set; }
[Inject]
public ICacheManager<int> IntCacheManager { get; set; }
}
如何设置我的 Ninject 内核来绑定通用 ICacheManager 接口,以便它使用 MyClass 中的类型进行解析?
像这样的东西,但实际上有效:
kernel.Bind<ICacheManager<T>>().ToMethod((context) =>
{
return CacheFactory.FromConfiguration<T>("defaultCache");
});