gpt4 book ai didi

c# - 字符串插值到变量中

转载 作者:太空宇宙 更新时间:2023-11-03 21:01:18 24 4
gpt4 key购买 nike

我正在尝试使用 c# 6.0 中的字符串插值将人名作为动态值插入到电子邮件正文中。

概念验证

public class Program
{
public static void Main()
{
var p = new Person { FirstName = "John", LastName = "Smith" };
var msg = $"{p.FirstName} says 'Hello World!'";

Console.WriteLine($"Message: {msg}");
}
}
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
}

这个概念验证输出字符串:

Message: John says 'Hello World!'

实现

所以现在当我尝试使用这个概念来构建我的 MailMessage 时,我在我的电子邮件中得到了 {Contact.FirstName} 输出。这是代码:

private string _Body;
public string Body
{
get { return _Body; }
set
{
_Body = value;
RaisePropertyChangedEvent("Body");
}
}

var Contacts = Context.Contacts
.Where(x => x.ContactGroupId == ContactGroupId && x.Deleted == false);

// By this point, Body will already have a value containing the interpolation.
// For example: Body = "Message: {Contact.Name} says \"Hello World!\"";
foreach (var Contact in Contacts)
{
MailMessage Msg = new MailMessage();

MailMessage.Body = ${Body}
}

问题

这应该将主体呈现为:

Message: John says "Hello World!"

相反,呈现的是:

Message: {Contact.FirstName} says "Hello World!"

如果我实际上没有在代码中对字符串进行硬编码,我该如何将我的变量插入到字符串中?

最佳答案

${Body} 无法编译。

您不能在运行时生成插值,它是一种语法糖,由编译器转换为 String.Format

您可以使用 StringBuilderString 中的 Replace 来解决您的问题:

sb.Replace("{p.FirstName}", p.FirstName);

关于c# - 字符串插值到变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45236086/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com