A.拥有单独的财产
public string Operator { get; set; }
public string BetterOperator => Operator?.ToLower();
如果你有一个无法完全控制的原始类(例如自动生成),我会尝试使用分部类:
public partial class Rule
{
public string Operator { get; set; }
}
public partial class Rule
{
public string BetterOperator => Operator?.ToLower();
}
B.虚拟
另一种选择可以是使属性成为虚拟属性并使用派生类:
(
我从类切换到记录只是为了一个不错的控制台。WriteLine
)
public record Rule
{
public virtual string? Operator { get; set; }
}
public record RuleExt : Rule
{
public override string? Operator
{
get { return base.Operator; }
set { base.Operator = value?.ToLower(); }
}
}
然后是以下内容:
var r = new RuleExt() { Operator = "Plus" };
Print(r);
static void Print(Rule r) => Console.WriteLine(r);
将打印:
RuleExt { Operator = plus }