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

理想情况下,您希望使用构造函数注入来注入类所需的依赖项。但是,扩展方法只是静态类上的静态方法,您不能对静态类进行构造函数注入。

因此,您目前正在回退到服务定位器模式,这远非理想,应尽可能避免。

因此,您要么必须将您的类提升为非静态类,并将您的扩展方法提升为非静态方法,以使其像往常一样被注入,否则您必须将加密器传递给该方法。

于 2013-11-08T10:34:22.957 回答