.NET开发中将两个属性合并为单个属性的技术问题咨询
.NET 两个姓名属性合并实现方案
现有属性定义:
public string L_NAME { get; set; } public string F_NAME { get; set; }
以下是不同场景的实现方案:
方案1:只读计算属性(最常用,无额外存储开销)
适用于只需要读取合并后的值,不需要通过合并属性反向修改两个原始属性的场景,值会随L_NAME、F_NAME的变更自动更新:// 合并为全名,自动去除两端多余空格 public string FULL_NAME => $"{F_NAME} {L_NAME}".Trim();如果需要调整姓和名的顺序、或者用其他字符分隔,直接修改
$""内的拼接逻辑即可方案2:支持读写的合并属性
适用于需要给合并后的属性赋值,自动拆分更新L_NAME和F_NAME的场景:public string FULL_NAME { get => $"{F_NAME} {L_NAME}".Trim(); set { if (string.IsNullOrWhiteSpace(value)) { F_NAME = string.Empty; L_NAME = string.Empty; return; } // 按第一个空格拆分,前半部分为F_NAME,后半部分为L_NAME,可根据需求调整拆分规则 var nameParts = value.Split(' ', 2, StringSplitOptions.RemoveEmptyEntries); F_NAME = nameParts[0]; L_NAME = nameParts.Length > 1 ? nameParts[1] : string.Empty; } }方案3:完全替换原有属性(兼容旧业务/序列化场景)
如果你要彻底删除L_NAME和F_NAME,统一只用合并后的属性,可以直接定义:public string FULL_NAME { get; set; }如果需要兼容旧的序列化数据、或者旧代码调用,可以给原有属性标记过时提示:
[Obsolete("请使用FULL_NAME属性替代", false)] public string L_NAME { get; set; } [Obsolete("请使用FULL_NAME属性替代", false)] public string F_NAME { get; set; }
内容的提问来源于stack exchange,提问作者programmer
相关产品推荐
相关产品推荐

