加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 如何为外部依赖项使用依赖注入?

发布时间:2020-12-16 06:30:01 所属栏目:asp.Net 来源:网络整理
导读:我想我几乎得到了这个. 说我希望我的应用程序发送短信.但我还不确定我是否应该使用Twilio或SomeOtherSMSService.事实上,我真的不在乎.所以我有一些简单的东西,所以我可以继续开发我的应用程序. public interface ISMSService{ public bool SendMessage(strin
我想我几乎得到了这个.

说我希望我的应用程序发送短信.但我还不确定我是否应该使用Twilio或SomeOtherSMSService.事实上,我真的不在乎.所以我有一些简单的东西,所以我可以继续开发我的应用程序.

public interface ISMSService{
    public bool SendMessage(string to,string message);
}

现在我想试试Twilio.这是我感到困惑的地方.我可以将它安装为Nuget包但我不认为他们使用REST API的C#包装器将完全匹配我的界面..并且修改它似乎也不是一个好主意.

从自述文件我可以看到使用它我需要做这样的事情

var msg = twilio.SendSmsMessage("+15551112222","+15553334444","Can you believe it's this easy to send an SMS?!");

我最好的猜测是我应该把它包装到我自己的接口实现中.
像这样的东西.

using Twilio;

public TwilioSMSService : ISMSService
{
    TwilioRestClient twilio;
    public TwilioSMSService()
    {
        twilio = new TwilioRestClient("accountSid","authToken");

    }

    public bool SendMessage(string to,string message)
    {
        var msg = twilio.SendSmsMessage("+15551112222",to,message);
        if (msg != null) return true;
        return false;
        // this would obviously need more logic.
    }

我想确保我保持依赖注入原则,但我觉得我需要在默认构造函数中实例化TwilioRestClient,这正是我应该帮助你避免的依赖注入:s.

这种方法是否正确?如果不是,你会怎么做?

请帮忙.

解决方法

那是完全可以接受的.您正在抽象TwilioRestClient的依赖性远离消耗类.这样你就可以在你的控制器中投入FakeSMSService进行单元测试.你不应该对Twilio进行单元测试.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读