我正在构建一个具有名为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();
我更喜欢
object mailer;
然后在构造函数
中switch (software)
{
case EnunInternalMailingSoftware.dotnet:
this.mailer = new System.Net.Mail.MailMessage();
break;
case EnunInternalMailingSoftware.mono:
this.mailer = new Mono.Mailing.MailMessage();
break;
}
问题在于邮件程序在设计时没有属性。所以我无法编译我的代码。
如何解决这个问题,我采取了正确的方法。提前致谢
答案 0 :(得分:8)
您应该使用适配器模式: http://en.wikipedia.org/wiki/Adapter_pattern
定义一个涵盖所需方法的接口(例如SendMail()),然后为每个实现接口的MailMessage对象编写一个简单的适配器类,并委托给特定MailMessage类上的正确方法。