2

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

1 に答える 1