如果我们想利用DI(依赖注入),还应该创建实例吗?

问题描述 投票:1回答:2

我对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',但是我还有很多要讲的内容,因此我迫切需要适当的答案。

谢谢你。

我对Dependency Injection概念有了更深入的了解,我读了更多,更喜欢它背后的想法。其实我很喜欢。我已经使用了一段时间了,但是仍然有很多事情会混淆...

c# dependency-injection instantiation constructor-injection
2个回答
0
投票

这是一个非常简单的示例,并且相对容易定义,因为您的耦合是没有任何服务相关功能的基本Class。让我们从维基百科中DI的定义开始:


0
投票

依赖注入在某些方面很强大

© www.soinside.com 2019 - 2024. All rights reserved.