【发布时间】:2021-04-27 14:48:47
【问题描述】:
我有一个电子邮件模板
例如这个
你好@FirstName@ @LastName@
我有一个来自具有属性的参数的对象
我需要迭代所有对象属性,并将与用“”引用的属性名称匹配的所有单词替换为属性值。
因此,例如,我有一个包含 FirstName 和 LastName 的对象,我需要迭代此对象属性并更改电子邮件中的 @FirstName@ 和 @LastName@。
我试着写这个方法
private string ReplaceTemplateValues(object input, string emailTemplate)
{
foreach(var property in input.GetType().GetProperties())
{
var replacedTemplate = emailTemplate.Replace($"@{property.Name}@", property);
}
}
但是我如何在var replacedTemplate = emailTemplate.Replace($"@{property.Name}@", property); 中获取属性值
并返回整个替换的字符串?
【问题讨论】:
-
就我个人而言,我使用Razor Engine Core 来处理这些事情(还有一个非核心版本,IIRC)。多年来成功使用它。
-
我不想使用 Razor,我只需要替换并返回替换字符串 @UweKeim
-
获取价值:
property.GetValue(input) -
它会返回字符串吗?我猜没有@KlausGütter
-
它会返回属性的任何数据类型——你可以在返回值上调用
.ToString()。