私のアプリでは、接続したいデータベースをユーザーに尋ね、次のように 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>());
}
GetInstance() の代わりに MainForm の依存関係の 1 つである unityContainer を使用します。
TestSQLConnection testSQLConnection = unityContainer.Resolve<TestSQLConnection>();
ただし、これは更新された構成を使用しません。
EL 静的クラスで行ったように、Unity で更新された構成をマージするにはどうすればよいですか?