呼び出し元のアセンブリがデバッグ構成になっていると、動作が異なるアセンブリ内のメソッドを作成しようとしています。
具体的には、テンプレートを使用して電子メールを作成および送信するメーラー ライブラリがあります。クライアントに誤ってデバッグ メールをスパム送信したくないので、2 つのバージョンのSendMail
メソッドを作成しようとしています。
アイデアは、デバッグ モードMailMessage.Recipients
ではクリアされ、代わりにデフォルトのメール アドレスが使用されるというものです (つまり、私たち自身の内部メール アドレス)。呼び出し側で追加のコードや構成を必要とせずに、これを可能な限り透過的にしたいと考えています。
問題は、メーラー ライブラリが Nuget パッケージに組み込まれるため、常にリリース ビルドになることです。私はこのようなことをしたかった:
[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);
}
}
呼び出しメソッドが Release 構成にある SendMail メソッドであるため、これは機能しません。
同じメソッド呼び出しを使用して、パブリック インターフェイスは同じままですが、この機能を取得する方法はありますか? 代替手段は、オプションのisDebug = false
パラメーターまたは構成設定またはそれらの線に沿った何かを使用することになると思いますが、このアセンブリの外部の他のコードを編集する必要なしにそれを行うことをお勧めします。
前もって感謝します。