如何在C#逐字字符串字面量中添加DateTime生成唯一邮箱?
解决逐字字符串中生成唯一邮箱的问题
给你三种实用的实现方式,根据你的需求选就行:
方法1:字符串替换(快速适配现有代码)
先生成指定格式的时间戳,再替换原字符串里的固定邮箱占位:
public class Payload { public string GetFirstPayload() { // 生成YYYYMMDDTHHMMSS格式的时间戳 string timestamp = DateTime.Now.ToString("yyyyMMddTHHmmss"); // 把原字符串里的邮箱改成占位符,方便替换 string basePayload = @"{ ""channel"": ""XYZ"", ""Email"": ""abc{0}@abc.com"" }"; // 替换占位符生成唯一Payload return string.Format(basePayload, timestamp); } }
方法2:逐字插值字符串(更简洁)
C# 6及以上支持$@组合,既能保留JSON的格式,又能直接嵌入时间戳表达式:
public class Payload { public string GetFirstPayload() { string timestamp = DateTime.Now.ToString("yyyyMMddTHHmmss"); // 注意逐字字符串里的{要写成{{转义,避免被当成插值标记 return $@"{{ ""channel"": ""XYZ"", ""Email"": ""abc{timestamp}@abc.com"" }}"; } }
方法3:序列化实体类(推荐,易维护)
手动拼接JSON容易出错,尤其是Payload复杂时,定义实体类再序列化更靠谱:
// 先定义和JSON对应的实体类 public class RequestPayload { public string channel { get; set; } public string Email { get; set; } } public class Payload { public string GetFirstPayload() { string timestamp = DateTime.Now.ToString("yyyyMMddTHHmmss"); var payloadObj = new RequestPayload { channel = "XYZ", Email = $"abc{timestamp}@abc.com" }; // 用Newtonsoft.Json序列化(RestSharp也自带序列化工具,按需选择) return Newtonsoft.Json.JsonConvert.SerializeObject(payloadObj, Newtonsoft.Json.Formatting.Indented); } }
内容的提问来源于stack exchange,提问作者Sahil
相关产品推荐
相关产品推荐

