利用反射进行动态加载dll

     动态调用dll

    /// <summary>
    /// 短信发送接口实现工厂
    /// </summary>
    public static class EosSMSProviderFactory
    {
        public static bool InitProvider()
        {
            IEosSMSProvider provider = GetProvider();
            return provider != null;
        }
        /// <summary>
        /// 获得当前配置的发送短信接口
        /// </summary>
        /// <returns></returns>
        public static IEosSMSProvider GetProvider()
        {
            string smsProviderClass = ConfigurationManager.AppSettings["sms.provider"];
            if (string.IsNullOrEmpty(smsProviderClass))
                return null;
            return (IEosSMSProvider)Activator.CreateInstance(getType(smsProviderClass));
        }

        public static Type getType(string smsProviderClass)
        {
            Type providerType = Type.GetType(smsProviderClass);
            if (providerType != null)
            {
                return providerType;
            }
            string dllname = smsProviderClass.Substring(smsProviderClass.IndexOf(",")+1).Trim().ToLower();
            if (!dllname.EndsWith(".dll")){
                dllname = dllname + ".dll";
            }
            string dllfile = AppDomain.CurrentDomain.BaseDirectory + "bin\\Plugin\\"+dllname;
            Assembly assembly = Assembly.LoadFrom(dllfile);
            string classname = smsProviderClass.Substring(0, smsProviderClass.IndexOf(","));
            return assembly.GetType(classname);
        }



    }

短信发送接口

      /// <summary>
    /// Eos短信发送接口
    ///     实现这个接口后可被Eos系统调用
    /// </summary>
    public interface IEosSMSProvider
    {
        /// <summary>
        /// 发送手机短信
        ///     如果不设置固定发送时间,则参数sendTime设为空
        /// </summary>
        /// <param name="receivers">接收人号码列表</param>
        /// <param name="content">短信内容</param>
        /// <param name="sendTime">固定发送时间</param>
        /// <returns>返回信息</returns>
        string SendMessage(string[] receivers, string content, string sendTime);


        /// <summary>
        /// 接受上行回复
        /// </summary>
        /// <returns></returns>
        string GetReceivedMsg();
    }

实现接口类 完成短信发送 

    class aliyunSMSProvider : IEosSMSProvider
    {
        private string AppKey = "23537294";
        private string AppSecret = "2bc5652127261532fb3f77fa51139fe8";
        private string SignName = "短信测试";
        private string TemplateCode = "SMS_2*****";
        private const String Host = "http://sms.market.alicloudapi.com";
        private const String path = "/singleSendSms";
        private string RegionId = "cn-hangzhou";


        public aliyunSMSProvider()
        {
            Init();
        }


        private void Init()
        {
            AppKey = ConfigurationManager.AppSettings["aliyun.appKey"];
            AppSecret = ConfigurationManager.AppSettings["aliyun.appSecret"];
            SignName = ConfigurationManager.AppSettings["aliyun.SignName"];
            TemplateCode = ConfigurationManager.AppSettings["aliyun.TemplateCode"];
        }
        public string SendMessage(string[] receivers, string content, string sendTime)
        {
            DateTime dtSendTime;
            bool withSendTime = DateTime.TryParse(sendTime, out dtSendTime);
            string receiverText = "";
            string sendTimeText = "";
            if (withSendTime)
            {
                sendTimeText = dtSendTime.ToString("yyyy-MM-dd hh:mm:ss");
            }
            foreach (string phonenumber in receivers)
            {
                if (receiverText == "")
                {
                    receiverText = phonenumber;
                }
                else
                {
                    receiverText += ";" + phonenumber;
                }
            }


            IClientProfile profile = DefaultProfile.GetProfile(RegionId, AppKey, AppSecret);
            IAcsClient client = new DefaultAcsClient(profile);
            SingleSendSmsRequest request = new SingleSendSmsRequest();
            //String json = "{{\"name\":\"{0}\"}}";
            //json = string.Format(ParamString, content);  
            request.SignName = SignName;
            request.TemplateCode = TemplateCode;
            request.RecNum = receiverText;
            request.ParamString = content;
            SingleSendSmsResponse httpResponse = client.GetAcsResponse(request);


            return httpResponse.HttpResponse.isSuccess().ToString();
        }
     
        public string GetReceivedMsg()
        {
            return "";
        }
    }
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值