0
我正在构建一个名为Mailer的属性的助手对象。实际上,Mailer可以是System.Net.Mail.MailMessage或Mono.System.Net.Mail.MailMessage。所以我最好只想要1个邮件声明。C#如何动态地转换对象?
例如,我不想:
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;
}
的问题是,邮件具有在设计时没有属性。所以我无法编译我的代码。
这是如何解决的,我采取了正确的方法。在此先感谢
您能否提供一些基本的概述? – 2010-05-25 09:38:14
@JL - 定义包含您想要调用的方法的IMailer接口。然后,创建一个MonoMailerAdapter类,实现此接口并保存可将方法调用委托给的Mono Mailer类的实例。同样为System.Net版本创建一个适配器。然后你的'对象邮件程序'字段变成'IMailer邮件程序';' – Paolo 2010-05-25 09:40:01
非常感谢你 - 现在正在研究。 – 2010-05-25 09:42:48