13

Simple Injector の使用方法を理解しようとしています。単純なサービスとそのコンポーネントの登録に問題なくプロジェクトで使用しました。

ただし、インターフェイスを実装するコンストラクターが 3 つ以上あるコンポーネントがある場合は、依存性インジェクターを使用したいと考えていました。

public DAL: IDAL
{
    private Logger logger;
    string _dbInstance;
    public DAL()
    {
        logger = new Logger();
    }

    public DAL(string databaseInstance)
    {
         logger = new Logger();
         _dbInstance = databaseInstance;
    }
}

サービスを登録する方法は次のとおりです。

container.Register<IDAL, DAL>();

コードを実行すると、次のエラーが発生します。

コンテナーが DAL を作成できるようにするには、パブリック コンストラクターを 1 つだけ含める必要がありますが、コンテナーには 2 つ含まれています。

コンストラクターを削除した後の次のエラーは、コンストラクターがパラメーターを受け入れられないことです。

DAL 型のコンストラクターには、コンストラクター インジェクションに使用できない String 型のパラメーター 'databaseInstance' が含まれています。

クラスに 2 つ以上のパブリック コンストラクターがある場合に依存性注入を行う方法はありますか? または、パラメーターを受け入れるパブリック コンストラクターを 1 つ持っていますか?

ここでドキュメントを読みました:SimpleInjector(Getting Started)

ドキュメントは理解しやすいように始まりますが、指数関数的に複雑になり、彼らが言及する後者の例のいずれかが私の問題に関連しているかどうかを解読しようとするのに苦労しています.

4

2 に答える 2