3

コンテナを介してクラスのインスタンスを取得できるようにする拡張メソッドがあります。

public static string EncryptString(this SecureString input)
{
    if (input == null) return null;

    var encryptor = Injector.Container.GetInstance<ICryptFactory>().GetEncryptor(salt);

    return encryptor.Encrypt(input.ToInsecureString());
}

ただし、コンテナへの依存関係は本当に必要ありませんが、インスタンスを取得する方法がわかりません。

これを行う方法についてのアイデアはありますか?

4

1 に答える 1

2

理想的には、コンストラクター注入を使用して、クラスが必要とする依存関係を注入します。ただし、拡張メソッドは静的クラスの静的メソッドにすぎず、静的クラスでコンストラクター注入を行うことはできません。

このため、現在Service Locator パターンにフォールバックしていますが、これは理想とはかけ離れており、可能な限り避ける必要があります。

したがって、クラスを非静的クラスに昇格させ、拡張メソッドを非静的メソッドに昇格させて、通常どおり注入できるようにするか、暗号化機能をメソッドに渡す必要があります。

于 2013-11-08T10:34:22.957 に答える