use*_*485 1 .net c# dependency-injection inversion-of-control autofac
我正在使用.NET(MVC5,Web API等).我理解构造函数注入(在愤怒中使用它相当新).我有一个类具有依赖的方法.我不想使用构造函数注入,因为每次实例化此类时我将创建依赖对象(并且大多数方法不使用此依赖对象).所以我认为方法注入听起来像它可能是事情.但是我无法弄明白该怎么做(我使用的是Autofac).
因此,如果我的方法是无效的DoSomething(字符串x,int y)并且该方法需要使用IMyService的实现,那么如何在不使用构造函数注入的情况下执行此操作?
我见过的唯一方法注入技术是在实例化时有效地调用方法的方法.这似乎对我的情况没有帮助,它仍然意味着即使我要调用不需要它的方法,所有实例都会创建此依赖项.
我确信它很简单,但我现在无法理解.你能帮一个例子吗?
UPDATE
这是它的关键.我喜欢Jim建议的Lazy的想法,并会尝试这个.我怀疑的方法注入也是如此,如果是这样的话,我真的不明白它的意义 - 为什么要使用它而不是构造函数注入?
public class MailService {
// lots of methods that don't need PlayerDataService
public void SendPlayersEmail() {
var service = new PlayerDataService();
var players = service.GetPlayers();
foreach(var player in players) {
SendEmail(player);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我不想使用构造函数注入,因为每次实例化此类时我将创建依赖对象(并且大多数方法不使用此依赖对象).
有问题.将该功能分解为新类.
也就是说,至少在我的经验中,当方法不适合类的其余部分时(或者具有其他地方未使用的依赖项),这是最佳解决方案.
您还应该考虑对象分配非常便宜,在性能受损之前每秒需要数百万次分配(除非您使用的是Ninject;))
| 归档时间: |
|
| 查看次数: |
2243 次 |
| 最近记录: |