辞書はどうですか?
public static IReadOnlyDictionary<string, IPersistenceConfigurer> DbConfigurations =
new ReadOnlyDictionary<string, IPersistenceConfigurer>(
new Dictionary<string, IPersistenceConfigurer>
{
{ "azure", MsSqlConfiguration.MsSql2008
.ConnectionString("ConnectionString")
.Dialect<MsSqlAzure2008Dialect>()
.Driver<SqlAzureClientDriver>() },
{ "mssql", MsSqlConfiguration.MsSql2008
.ConnectionString("ConnectionString")
.Dialect<MsSql2008Dialect>() },
{ "sqlite", SQLiteConfiguration.Standard
.InMemory() },
// etc..
});
IPersistenceConfigurer
は、データベース構成で実装する必要があるインターフェイスです。
辞書なので、 を呼び出すことで、データベース構成が存在するかどうかをいつでも確認できますDbConfigurations.ContainsKey("mssql")
。
別のオプションは、IPersistenceConfigurer
(別名) の汎用リストを使用し、次のようにLINQ拡張メソッドList<IPersistenceConfigurer>
を使用して構成を取得することです。 OfType<T>
dbConfigs.OfType<MsSqlConfiguration >().Single()
...また
dbConfigs.Single(config => config is MsSqlConfiguration)
依存性注入を使用していて、 Castle Windsorなどの IoC コンテナーを使用している場合の別のオプションは、IPersistenceConfigurer
それを必要とするコンポーネントにのインスタンスを提供できるコンテナーにファクトリを登録することです。このようにして、実行している環境に応じて、サービスにさまざまなコンポーネントを登録できます(一度に必要なのはアプリケーションにIPersistenceConfigurer
特定の 1 つだけであると想定しているため)。IPersistenceConfigurer