我正在尝试构建电子邮件模板。我得到的是假设是工作示例,但我在尝试让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;
}
答案 0 :(得分:1)
对我来说,它看起来像extension method。
您需要在文件顶部引用扩展方法所在的命名空间。
示例:
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;
}
答案 1 :(得分:0)
尝试使用String.Format()
代替,就像你建议的那样......
body = body.Replace(String.Format("<%={0}%>", pairs[i]), String.Format("<%={0}%>", pairs[i+1]);
这假设您希望格式化搜索字符串和替换字符串。
答案 2 :(得分:0)
我发现使用.Replace()然后跳过所有其他的箍更容易。谢谢你的建议。
string email = emailTemplate
.Replace("##USERNAME##", userName)
.Replace("##MYNAME##", myName);
这似乎是我的电子邮件模板问题最简单的解决方案。