我有一个扩展方法,我希望能够通过容器获取类的实例 e.g。
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());
}
但是,我真的不想要对容器的依赖,但我无法弄清楚如何获取实例。
关于如何做到这一点的任何想法?
答案 0 :(得分:2)
理想情况下,您希望使用构造函数注入来注入类所需的依赖项。但是,扩展方法只是静态类的静态方法,不能对静态类进行构造函数注入。
因此,您目前正在回归Service Locator pattern far from ideal,应该尽可能避免。
因此,您必须将您的类提升为非静态类,并将扩展方法提升为非静态方法以允许它像往常一样注入,或者您必须将加密器传递给方法。