В моем приложении я спрашиваю пользователя, к какой базе данных он хочет подключиться, и я записываю его обратно в EL5.0 следующим образом:
var builder = new ConfigurationSourceBuilder();
builder.ConfigureData()
.ForDatabaseNamed("UserDatabase")
.ThatIs.ASqlDatabase()
.WithConnectionString(sqlConnectionStringBuilder.ConnectionString)
.AsDefault();
var configSource = new DictionaryConfigurationSource();
builder.UpdateConfigurationWithReplace(configSource);
EnterpriseLibraryContainer.Current
= EnterpriseLibraryContainer.CreateDefaultContainer(configSource);
Который затем использовался всякий раз, когда я вызывал GetInstance следующим образом:
TestSQLConnection testSQLConnection =
EnterpriseLibraryContainer.Current.GetInstance<TestSQLConnection>();
Теперь я пытаюсь использовать Unity в моем классе программ.
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
IUnityContainer unityContainer = new UnityContainer().AddNewExtension<EnterpriseLibraryCoreExtension>();
Application.Run(unityContainer.Resolve<MainForm>());
}
и я использую unityContainer, который является одной из зависимостей MainForm вместо GetInstance ():
TestSQLConnection testSQLConnection = unityContainer.Resolve<TestSQLConnection>();
Но это не использует обновленную конфигурацию.
Как объединить обновленную конфигурацию в Unity, как я это сделал со статическим классом EL?