これは、 Micah 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");
});