我正在尝试创建一个程序集方法,在调用程序集处于Debug配置时表现不同。
具体来说,我有一个Mailer库,使用模板创建和发送电子邮件。由于我不想意外地向客户发送调试邮件,我正在尝试制作两个版本的
我的想法是,在Debug模式下
问题在于Mailer库被构建为Nuget包,因此始终处于Release构建状态。我想做这样的事情:
具体来说,我有一个Mailer库,使用模板创建和发送电子邮件。由于我不想意外地向客户发送调试邮件,我正在尝试制作两个版本的
SendMail
方法。我的想法是,在Debug模式下
MailMessage.Recipients
将被清除,并且将使用默认的邮件地址(即我们自己的内部邮件地址)。我希望这尽可能地透明,而不需要在调用方额外编写代码或配置。问题在于Mailer库被构建为Nuget包,因此始终处于Release构建状态。我想做这样的事情:
[System.Diagnostics.Conditional("DEBUG")]
private void SetDebugMode(MailMessage mail)
{
mail.To.Clear();
mail.CC.Clear();
mail.Bcc.Clear();
mail.To.Add("support@example.com");
mail.Subject += " [DEBUG]";
}
public void SendMail()
{
SmtpClient smtp = new SmtpClient();
using (MailMessage mail = new MailMessage())
{
[...]
SetDebugMode(mail);
smtp.Send(mail);
}
}
由于调用方法是发布配置中的SendMail方法,因此此方法无法使用。
有没有一种方式可以使用相同的方法调用,使公共接口保持不变但仍然获得此功能?
我猜替代方案可能是使用可选的isDebug = false
参数或配置设置或类似的东西,但我更喜欢在不编辑此程序集外的任何其他代码的情况下完成它。
提前致谢。