C# 解析用于邮件合并的字符串

C# 解析用于邮件合并的字符串,c#,mailmerge,C#,Mailmerge,我正在从事一个C#项目,假设我有一个字符串,其中包含如下内容: string content = "[IF FullName = 'Bob Smith']Hello my friend"; content += "[ELSEIF TotalPurchases > 1000]Dear valued customer"; content += "[ELSE]Dear [FirstName]"; content += "[ENDIF]"; 假设我有一个键/值字典,其中键是“FullName”和

我正在从事一个C#项目,假设我有一个字符串,其中包含如下内容:

string content = "[IF FullName = 'Bob Smith']Hello my friend";
content += "[ELSEIF TotalPurchases > 1000]Dear valued customer";
content += "[ELSE]Dear [FirstName]";
content += "[ENDIF]";
假设我有一个键/值字典,其中键是“FullName”和“TotalPurchases”,值是“janedoe”和“500”。解析内容和最重要的评估“IF…ELSE…ENDIF”的好方法是什么


是否有一个开源项目可以利用,或者我应该自己编写代码来解析内容?

我有点困惑。这真的是你的字符串吗,还是你说的是由C#源代码生成的字符串


我假设是后者,我可能会自己解析它,因为它不太复杂,也不太专业。我还写了一封信,可能会帮你解决问题。

我有点困惑。这真的是你的字符串吗,还是你说的是由C#源代码生成的字符串


我假设是后者,我可能会自己解析它,因为它不太复杂,也不太专业。还有一个我写的可能对您有所帮助。

一个选项是用实际的C#If语句逻辑替换上面的“If Else End If”文本数据,并在运行时编译动态构建的C#文本以评估If逻辑。处理这种动态C#编译的主要类是CSharpCodeProvider类

CsharpCodeProvider信息

一个选项是用实际的C#If语句逻辑替换上面的“If-Else-End-If”文本数据,并在运行时编译动态构建的C#text以评估If逻辑。处理这种动态C#编译的主要类是CSharpCodeProvider类

CsharpCodeProvider信息

我问题中的示例稍微简化了一点,但它非常接近实际字符串。我的目标是能够评估“IF…ELSE…ENDIF”以生成最终内容。例如,如果我的数据包含“Bob Smith”,则生成的内容将是“你好,我的朋友”;如果我的数据包含“Jane Doe”,且Jane花费了1000美元以上,则生成的内容将是“亲爱的尊贵客户”,等等。谢谢你提供帮助课程,但我担心这对我的需要来说太简单了。@desautelsj:如果你不使用我的课程就好了。但我想我应该提一下,我用它写了一个语言解释器。这个类做的不多,但我将它用作基类,使低级解析更容易。。。你能分享一下你的语言解释器吗?我最终计划在我的网站上发布它,但可能需要很长时间,因为我正忙于其他项目。(尽管我可以咨询。)我问题中的例子有点简化,但它非常接近于一个实际字符串。我的目标是能够评估“IF…ELSE…ENDIF”以生成最终内容。例如,如果我的数据包含“Bob Smith”,则生成的内容将是“你好,我的朋友”;如果我的数据包含“Jane Doe”,且Jane花费了1000美元以上,则生成的内容将是“亲爱的尊贵客户”,等等。谢谢你提供帮助课程,但我担心这对我的需要来说太简单了。@desautelsj:如果你不使用我的课程就好了。但我想我应该提一下,我用它写了一个语言解释器。这个类做的不多,但我将它用作基类,使低级解析更容易。。。你能分享一下你的语言解释器吗?我最终计划在我的网站上发布它,但可能需要很长时间,因为我正忙于其他项目。(尽管我可以咨询。)