Ceci est pour la bibliothèque CacheManager de Michah Conrad. Dans son exemple, il crée un gestionnaire de cache à l'aide de la méthode CacheFactory.Build, comme on le voit ici:Enregistrement d'ICacheManager générique à l'aide d'un conteneur IoC (Ninject)
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);
}
}
Ma question, est-il possible d'enregistrer l'interface ICacheManger de sorte que toutes les dépendances de la propriété de tout type seront automatiquement créés par le conteneur IoC?
Dire que j'ai cette classe
public class MyClass
{
[Inject]
public ICacheManager<string> StringCacheManager { get; set; }
[Inject]
public ICacheManager<int> IntCacheManager { get; set; }
}
Comment pourrais-je configurer mon noyau Ninject pour lier l'interface générique ICacheManager afin qu'il résout en utilisant les types de MyClass?
Quelque chose comme ça, mais qui fonctionne réellement:
kernel.Bind<ICacheManager<T>>().ToMethod((context) =>
{
return CacheFactory.FromConfiguration<T>("defaultCache");
});
ne pas oublier d'utiliser singleton;) Sinon, Ninject crée une nouvelle instance de cache chaque fois que vous instanciez MyClass. .InSingletonScope() devrait fonctionner – MichaC