繁体   English   中英

自定义 setter 属性 C# 10

[英]Customize setter property C# 10

我正在使用 C# 10 并希望将绑定到Operator的任何值转换为小写

public class Rule
 {
    public string Operator { get; set; }
 }

我不能创建另一个属性并设置值。

private string _Operator ;
public string Operator 
{
  get            
  {
    return _Operator ;
  }
  set             
  {
    _Operator = value.toLower();
  }
}

有什么方法可以直接转换为小写任何绑定到public string Operator { get; set; } public string Operator { get; set; }

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. 虚拟

另一种选择可能是使属性虚拟并使用派生类:

我从类切换到记录只是为了一个不错的 Console.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 }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM