0

メールテンプレートを作成しようとしています。動作していると思われる例を取得しましたが、関数の1つでFormatWith()を解決しようとして問題が発生しています。

private static string PrepareMailBodyWith(string templateName, params string[] pairs)
{
    string body = GetMailBodyOfTemplate(templateName);

    for (var i = 0; i < pairs.Length; i += 2)
    {
        // wonder if I can bypass Format with and just use String.Format
        body = body.Replace("<%={0}%>".FormatWith(pairs[i]), pairs[i + 1]);
        //body = body.Replace("<%={0}%>",String.Format(pairs[i]), pairs[i + 1]);
    }
    return body;
}
4

3 に答える 3

1

私には拡張メソッドのように見えます。

ファイルの先頭にある拡張メソッドが存在する名前空間を参照する必要があります。

例:

namespace MyApp.ExtensionMethods
{
    public class MyExtensions
    {    
        public static string FormatWith(this string target, params object[] args) 
        { 
            return string.Format(Constants.CurrentCulture, target, args); 
        }    
    }
}

..。

using MyApp.ExtensionMethods;

...

private static string PrepareMailBodyWith(string templateName, params string[] pairs)
{
    string body = GetMailBodyOfTemplate(templateName);

    for (var i = 0; i < pairs.Length; i += 2)
    {
        // wonder if I can bypass Format with and just use String.Format
        body = body.Replace("<%={0}%>".FormatWith(pairs[i]), pairs[i + 1]);
        //body = body.Replace("<%={0}%>",String.Format(pairs[i]), pairs[i + 1]);
    }
    return body;
}
于 2012-12-11T22:44:41.900 に答える
0

あなたが提案したように、代わりに使用してみてくださいString.Format()...

body = body.Replace(String.Format("<%={0}%>", pairs[i]), String.Format("<%={0}%>", pairs[i+1]);

これは、検索文字列と置換文字列の両方をフォーマットする必要があることを前提としています。

于 2012-12-11T22:54:39.443 に答える
0

.Replace()を使用してから、他のすべてのフープをジャンプする方が簡単であることがわかりました。ご提案ありがとうございます。

        string email = emailTemplate
        .Replace("##USERNAME##", userName)
        .Replace("##MYNAME##", myName);

これは私のメールテンプレートの問題に対する最も簡単な解決策のようです。

于 2012-12-12T14:05:12.743 に答える