在我的MVC5 Web应用程序中,我正在使用依赖注入。但是这里有登录和相关功能,我在该dll中使用现有的dll和调用方法。现在我正在创建该类的对象并调用相应的方法。我可以在这里实现依赖注入,因为我没有这个类的接口
例如 我在我的应用程序中引用了一个名为MyCompany.Authenticate的DLL 登录我在该DLL中创建一个类的对象并在该类中调用login方法 即
WebAuthenticationClass obj =new WebAuthenticationClass();
obj.login(username,pwd);
这就是我现在正在做的事情。我需要将新对象创建更改为依赖注入。
答案 0 :(得分:0)
并非所有代码中的依赖项都需要抽象掉。但是,如果您确定代码中对MyCompany.Authenticate
或WebAuthenticationClass
的依赖性是不受欢迎的,则应将其置于抽象之后。
WebAuthenticationClass
没有实现抽象并不重要,因为这种抽象通常是有用的。抽象/接口必须由消费者定义,并且必须特定于消费者的需求。由第三方工具定义的抽象通常是无用的,因为它们是通用的并且为库本身定制。并且不要忘记在使用图书馆的抽象时,你仍然依赖于图书馆。
所以你应该做的是:
WebAuthenticationClass
。请注意,此界面可以具有与WebAuthenticationClass
完全不同的方法签名。再次:以对应用程序最有用的方式定义接口,即使这会使适配器更难实现。
答案 1 :(得分:0)
我倾向于使用Castle Windsor,我知道它会处理这个问题。我假设大多数其他IoC框架也是如此。让您的类接受WebAuthenticationClass
作为依赖项,然后从另一个程序集注册该类型。这应该是你所需要的一切。