我对Dependency Injection概念有了更深入的了解,我读了更多,更喜欢它背后的想法。我已经使用了一段时间,但仍然有很多事情时不时地使我感到困惑,并且我感到我没有充分利用它的潜力。
想象下面的代码。在此类中,(也许可以改善一些地方,但是..)我们有一个返回字符串值的方法。不需要构造函数注入(或者至少是我的想法,如果我错了,请纠正我),但是在try
块的最后一行,我们将创建StreamReader类的新实例将响应流传递给它,并使用ReadToEnd方法获得结果。依赖注入的想法是避免在类内部创建实例,但是如何处理这种情况?
public class WebClientService : IWebClientService { public async Task<String> GetApiResponseAsync(string Url) { String responseText = await Task.Run(() => { try { HttpWebRequest request = WebRequest.Create(Url) as HttpWebRequest; WebResponse response = request.GetResponse(); Stream responseStream = response.GetResponseStream(); return new StreamReader(responseStream).ReadToEnd(); } catch (Exception e) { LogMessageDispatcher.Instance.Log(e); } return null; }); return responseText; } }
我正在阅读'Mark Seemann的书-依赖注入',但是我还有很多要讲的。
我对Dependency Injection概念有了更深入的了解,我读了更多,更喜欢它背后的想法。我已经使用了一段时间,但是现在仍然有很多事情让我感到困惑,并且...
这是一个非常简单的示例,并且相对容易定义,因为您的耦合是没有任何服务相关功能的基本Class。让我们从维基百科中DI的定义开始:
依赖注入在某些方面很强大
依赖注入的想法是避免在类内部创建实例,但是如何处理这种情况?