Je suis en train de construire un objet d'aide qui a une propriété appelée Mailer. En réalité, Mailer peut être un System.Net.Mail.MailMessage ou un Mono.System.Net.Mail.MailMessage. Donc je préférerais seulement 1 déclaration de mailer.C# comment lancer dynamiquement un objet?
Par exemple, je ne veux pas:
private Mono.Mailing.MailMessage MonoMessage = new Mono.Mailing.MailMessage();
private System.Net.Mail.MailMessage MailMessage = new System.Net.Mail.MailMessage();
Je préfère
object mailer;
ensuite dans le constructeur
switch (software)
{
case EnunInternalMailingSoftware.dotnet:
this.mailer = new System.Net.Mail.MailMessage();
break;
case EnunInternalMailingSoftware.mono:
this.mailer = new Mono.Mailing.MailMessage();
break;
}
Le problème est que Mailer n'a pas de propriétés au moment de la conception . Donc je ne peux pas compiler mon code.
Comment cela peut-il être corrigé, est-ce que je prends la bonne approche. Merci à l'avance
pouvez-vous s'il vous plaît fournir quelques grandes lignes? –
@JL - Définit une interface IMailer qui contient les méthodes que vous souhaitez appeler. Ensuite, vous créez une classe MonoMailerAdapter qui implémente cette interface et contient une instance de la classe Mono Mailer à laquelle elle peut déléguer des appels de méthode. De même, créez un adaptateur pour la version System.Net. Ensuite, votre champ «objet mailer» devient «IMailer mailer»; – Paolo
merci beaucoup - recherche maintenant. –