0

意図したターゲット用途 (html 電子メール、ログ、データベース) の区切り記号を置き換えるメソッドを作成したいと思います。区切り文字は一定であるため、認識可能な名前を文字列値にマップするオブジェクトを参照できるようにしたいと考えています (セミコロン = “;”、htmlLineBreak = “<br/>” など)。以下よりもこれを行うためのより良い手段はありますか?

public static class Utilities
{
    public string ReplaceDelimiter(string content
                     , Delimiter currentDelimiter, Delimiter outputDelimiter)
    {
        return content.Replace(currentDelimiter.ToString()
                              , outputDelimiter.ToString());
    }
}

public class Delimiter
{
    public const string comma = ",";
    public const string semicolon = ";";
    public const string colon = ":";
    public const string lineBreak = "\r\n";
    public const string htmlLineBreak = "<br/>";
}

次のコメントを編集し
ました: 使用例は、エラーをさまざまなターゲットに記録し、同じ内容 (形式が異なる) を電子メールで送信する場合です。ログは、データベース列 (セミコロン区切りのキー/値が必要) またはログ ファイル (区切り文字を改行にする) に移動する場合があります。電子メールは HTML であるため、区切り文字を <br/> に置き換えます。

以下は、実際の例外を含むいくつかのパラメーターを持つロギング メソッドからの抜粋です。

StringBuilder delimitedMessage = new StringBuilder();

delimitedMessage.Append("Date=" + DateTime.Now.ToShortDateString() + ";");
delimitedMessage.Append("Time=" + DateTime.Now.ToLongTimeString() + ";");
delimitedMessage.Append("Source=" + objException.Source.ToString().Trim() + ";");
delimitedMessage.Append("Method=" + objException.TargetSite.Name.ToString() + ";");
delimitedMessage.Append("Erring Method=" + methodName + ";");
delimitedMessage.Append("Computer=" + System.Environment.MachineName.ToString() + ";");
delimitedMessage.Append("Log Message=" + logMessage + ";");
delimitedMessage.Append("Exception Error=" + objException.Message.ToString().Trim() + ";");
delimitedMessage.Append("Severity=" + severity.ToString() + ";");
delimitedMessage.Append("Stack Trace=" + objException.StackTrace.ToString().Trim() + ";");

contentToLog = delimitedMessage.ToString();

WriteToDb(contentToLog);
WriteToLog(Utilities.ReplaceDelimiter(contentToLog, Delimiter.semicolon, Delimiter.lineBreak));
SendEmail(Utilities.ReplaceDelimiter(contentToLog, Delimiter.semicolon, Delimiter.htmlLineBreak));
4

1 に答える 1

1
  • コード

    public class Delimiter {
        public static readonly Delimiter
            HtmlLineBreak=new Delimiter {
                Value="<br/>"
            },
            LineBreak=new Delimiter {
                Value="\r\n"
            },
            Semicolon=new Delimiter {
                Value=";"
            },
            Colon=new Delimiter {
                Value=":"
            },
            Comma=new Delimiter {
                Value=","
            };
    
        public override String ToString() {
            return Value;
        }
    
        public String Value {
            get;
            set;
        }
    }
    
  • テスト

    var t=Utilities.ReplaceDelimiter("123\r\n", Delimiter.LineBreak, Delimiter.HtmlLineBreak);
    Debug.Print("{0}", t);
    
  • 出力

    123<br/>

于 2013-03-06T18:10:24.827 に答える