我正在构建一个具有名为Mailer的属性的辅助对象.实际上,Mailer可以是System.Net.Mail.MailMessage,也可以是Mono.System.Net.Mail.MailMessage.所以我最好只想要1个邮件声明.
例如,我不想要:
private Mono.Mailing.MailMessage MonoMessage = new Mono.Mailing.MailMessage();
private System.Net.Mail.MailMessage MailMessage = new System.Net.Mail.MailMessage();
Run Code Online (Sandbox Code Playgroud)
我会比较喜欢
object mailer;
Run Code Online (Sandbox Code Playgroud)
然后在构造函数中
switch (software)
{
case EnunInternalMailingSoftware.dotnet:
this.mailer = new System.Net.Mail.MailMessage();
break;
case EnunInternalMailingSoftware.mono:
this.mailer = new Mono.Mailing.MailMessage();
break;
}
Run Code Online (Sandbox Code Playgroud)
问题是邮件程序在设计时没有属性.所以我无法编译我的代码.
如何解决这个问题,我采取了正确的方法.提前致谢
您应该使用适配器模式:http: //en.wikipedia.org/wiki/Adapter_pattern
定义一个涵盖所需方法的接口(例如SendMail()),然后为每个实现接口的MailMessage对象编写一个简单的适配器类,并委托给特定MailMessage类上的正确方法.
| 归档时间: |
|
| 查看次数: |
300 次 |
| 最近记录: |