J'ai une application qui utilise ORM (Nhibernate mais ce n'est pas le cas).Injection de dépendances et données spécifiques à l'utilisateur
Pour créer session NH nous avons besoin de passer quelque part: nom d'utilisateur, le nom de base de données, etc. J'ai donc mis en œuvre:
public interface ISettingsManager
{
Settings MySettings {get;set;}
}
public class Settings
{
public string DbUser{get;set;}
public string DbAddress {get;set;}
public string DbPassword{get;set;}
//...
}
public class SessionProvider
{
[Inject]
public ISettingsManager MySettings {get;set;}
public Session CreateSession
{
//Create Session object using settings passed do MySettings via IoC.
}
}
public static Main()
{
// very beggining of my application, bootstrap the DI container
Bind<ISettingsManager>().To<SettingsManagerImpl>();
// Application run
}
Tous mes NHibernate session fournisseurs ont le ISettingsManager
injecté via DI (Ninject) afin Je peux l'utiliser simplement. Cela fonctionne comme un mal, mais maintenant je dois supporter de nombreux utilisateurs dans mon application et le problème entre dans la scène. Donc, la question est de savoir comment implémenter les paramètres de l'utilisateur actuellement connecté de la meilleure façon, sans utiliser l'emplacement de service?
Je suppose que vous vouliez dire comme un charme et pas comme un mal, malgré la source violente pour le nom ninject :-) –