Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class ConfigurationProvider : Provider<Configuration> {
- public class ConfigurationProvider(string connectionString
- , Assembly mappings) {
- ConnectionString = connectionString;
- Mappings = mappings;
- }
- protected override Configuration CreateInstance(IContext context) {
- var c = new Configuration().Configure();
- c.AddAssembly(Mappings);
- c.Properties["connection.connection_string"] = ConnectionString;
- return c;
- }
- private readonly string ConnectionString;
- private readonly Assembly Mappings;
- }
- public class ConfigurationService {
- public ConfigurationService(ICurrentUser user) { CurrentUser = user; }
- public string BuildConnectionString() {
- return string.Format(DefaultConnectionString
- , CurrentUser.DatabaseInstanceName
- , CurrentUser.Login
- , CurrentUser.Password);
- }
- private readonly ICurrentUser CurrentUser;
- }
- public class CurrentUser : ICurrentUser {
- public CurrentUser(string dbinstance, string login, string password) {
- DatabaseInstanceName = dbinstance;
- Login = login;
- Passwword = password;
- }
- public readonly string DatabaseInstanceName;
- public readonly string Login;
- public readonly string Password;
- }
- string dbInstance = authenticationDialog.DatabaseInstanceName;
- string login = authenticationDialog.Login;
- string password = authenticationDialog.Password;
- var nHibernateConfigurationProvider =
- new ConfigurationProvider(
- new ConfigurationService(
- new CurrentUser(dbInstance, login, password)).BuildConnectionString()
- , Assembly.GetExecutingAssembly());
- // Wait until user is authenticated before continuing to bind???
- Bind<string>().ToMethod(ctx => ctx.Request.???.BuildConnectionString()).WhenInjectedInto<ConfigurationProvider>().InSingletonScope();
- Bind<Assembly>().ToConstant<Assembly>(Assembly.GetExecutingAssembly().WhenInjectedInto<ConfigurationProvider>();
- // Do your stuff to collect credentials
- // User now authenticated, initialize ICurrentUser instance singleton
- // You could have used a ICurrentUserFactory or static member, this is just a sample implementation
- kernel.Get<ICurrentUser>(new ConstructorArgument("dbInstance", dbInstance),
- new ConstructorArgument("login", login),
- new ConstructorArgument("password", password));
- // You can now access your NHibernate configuration properly
- var config = kernel.Get<Configuration>();
- Bind<Configuration>().ToProvider<ConfigurationProvider>();
- Bind<ConfigurationProvider>()
- .ToMethod(
- ctx => new ConfigurationProvider(ctx.Kernel.Get<ConfigurationService>().BuildConnectionString()));
- Bind<ICurrentUser>().To<CurrentUser>().InSingletonScope();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement