由于版本问题,阿里云SMS提供的相关dll只能与一同提供的aliyun-net-sdk-core配合使用,无法兼容Nuget上阿里官方上传的aliyun-net-sdk-core。如果在一个类库内封装多个阿里云相关功能,就会出现需要引用多个aliyun-net-sdk-core的情况,但是显然是不能如此引用的。
阿里云在提供SMS相关dll时提供了源码,查看过后,发现只要将相关功能需要的实体添加到项目中,然后调用Nuget上的aliyun-net-sdk-core即可。
SendSmsRequest:
1 public class SendSmsRequest : RpcAcsRequest2 { 3 public SendSmsRequest() : base("Dysmsapi", "2017-05-25", "SendSms") 4 { 5 } 6 7 private string templateCode; 8 9 private string phoneNumbers; 10 11 private string accessKeyId; 12 13 private string signName; 14 15 private string resourceOwnerAccount; 16 17 private string templateParam; 18 19 private string action; 20 21 private long? resourceOwnerId; 22 23 private long? ownerId; 24 25 private string smsUpExtendCode; 26 27 private string outId; 28 29 public string TemplateCode 30 { 31 get 32 { 33 return templateCode; 34 } 35 set 36 { 37 templateCode = value; 38 DictionaryUtil.Add(QueryParameters, "TemplateCode", value); 39 } 40 } 41 42 public string PhoneNumbers 43 { 44 get 45 { 46 return phoneNumbers; 47 } 48 set 49 { 50 phoneNumbers = value; 51 DictionaryUtil.Add(QueryParameters, "PhoneNumbers", value); 52 } 53 } 54 55 public string AccessKeyId 56 { 57 get 58 { 59 return accessKeyId; 60 } 61 set 62 { 63 accessKeyId = value; 64 DictionaryUtil.Add(QueryParameters, "AccessKeyId", value); 65 } 66 } 67 68 public string SignName 69 { 70 get 71 { 72 return signName; 73 } 74 set 75 { 76 signName = value; 77 DictionaryUtil.Add(QueryParameters, "SignName", value); 78 } 79 } 80 81 public string ResourceOwnerAccount 82 { 83 get 84 { 85 return resourceOwnerAccount; 86 } 87 set 88 { 89 resourceOwnerAccount = value; 90 DictionaryUtil.Add(QueryParameters, "ResourceOwnerAccount", value); 91 } 92 } 93 94 public string TemplateParam 95 { 96 get 97 { 98 return templateParam; 99 }100 set101 {102 templateParam = value;103 DictionaryUtil.Add(QueryParameters, "TemplateParam", value);104 }105 }106 107 public string Action108 {109 get110 {111 return action;112 }113 set114 {115 action = value;116 DictionaryUtil.Add(QueryParameters, "Action", value);117 }118 }119 120 public long? ResourceOwnerId121 {122 get123 {124 return resourceOwnerId;125 }126 set127 {128 resourceOwnerId = value;129 DictionaryUtil.Add(QueryParameters, "ResourceOwnerId", value.ToString());130 }131 }132 133 public long? OwnerId134 {135 get136 {137 return ownerId;138 }139 set140 {141 ownerId = value;142 DictionaryUtil.Add(QueryParameters, "OwnerId", value.ToString());143 }144 }145 146 public string SmsUpExtendCode147 {148 get149 {150 return smsUpExtendCode;151 }152 set153 {154 smsUpExtendCode = value;155 DictionaryUtil.Add(QueryParameters, "SmsUpExtendCode", value);156 }157 }158 159 public string OutId160 {161 get162 {163 return outId;164 }165 set166 {167 outId = value;168 DictionaryUtil.Add(QueryParameters, "OutId", value);169 }170 }171 172 public override SendSmsResponse GetResponse(UnmarshallerContext unmarshallerContext)173 {174 SendSmsResponse sendSmsResponse = new SendSmsResponse175 {176 HttpResponse = unmarshallerContext.HttpResponse,177 RequestId = unmarshallerContext.StringValue("SendSms.RequestId"),178 BizId = unmarshallerContext.StringValue("SendSms.BizId"),179 Code = unmarshallerContext.StringValue("SendSms.Code"),180 Message = unmarshallerContext.StringValue("SendSms.Message")181 };182 183 return sendSmsResponse;184 }185 }
SendSmsResponse:
1 public class SendSmsResponse : AcsResponse 2 { 3 public new string RequestId { get; set; } 4 5 public string BizId { get; set; } 6 7 public string Code { get; set; } 8 9 public string Message { get; set; }10 }