利用反射进行动态加载dll

来源:互联网 发布:算法竞赛入门书籍推荐 编辑:程序博客网 时间:2024/06/05 15:17

     动态调用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 0
原创粉丝点击