1
Autofac
で、2つの実装を1つの型で登録します。また、必要に応じて実装を交換する必要があります。しかし、常に1つの実装を取っています。Autofac - 複数の実装を使用
public class DataAccesss
{
public IDatabaseHelper { get; set; }
}
Autofac
builder.RegisterType<DatabaseHelper>()
.Named<IDatabaseHelper>("Sql")
.WithParameter(new TypedParameter(IDatabaseHelper), new DatabaseHelper(new SqlFactory))
.PropertiesAutowired();
builder.RegisterType<DatabaseHelper>()
.Named<IDatabaseHelper>("Oledb")
.WithParameter(new TypedParameter(IDatabaseHelper), new DatabaseHelper(new OleDbFactory))
.PropertiesAutowired();
とコントローラでは、この
1st - need to access `IDatabaseHelper` with `OleDb`
2nd - need to access `IDatabaseHelper` with `Sql`
のようなものを持っている必要があります。しかし、私の問題はIDatabaseHelper
ではnull
か、それは常にOleDb
なくSql
を取っているのいずれかです。
何を参照してください。 *オンデマンド*を意味しますか?異なるサービスのための異なる実装? –
と同じサービスで、OleDbClientとSqlClientの両方にアクセスする必要があります –
あなたが書くと、それは常にOleDbを取るでしょう、1インターフェイスはSqlFactoryまたはOleDbFactoryを取得します –