繁体   English   中英

如何获取自动实现属性的匿名支持字段名称

[英]how to get the anonymous backing field name of an auto-implemented properties

这里不是 C# 的完整专家。 如果这是一个非常常见的问题,请提前道歉。

考虑以下属性。

public bool IsOn{ get;set; }

根据https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/auto-implemented-properties ,上述 getter/setter 属性具有匿名支持字段

有没有办法让我看到这个“匿名支持字段”名称是什么,这样我就可以在不添加额外代码的情况下扩展设置器。 我要做的就是记录在存在此代码的 dll 中设置的值的内容。 例如,

public bool IsOn
{ 
   get;
   set
   {
      Log(value);
      "field name generated by c#" = value;
   }
}

还是每次我想查看设置的值时都必须手动创建一个字段? 如果是这样,当我们考虑可用性时,使用它们似乎是一种非常低效的方法。 请注意,这只是我要退出的设置器之一。 还有更多需要登录这个特定的 dll

自动实现的属性是具有默认获取和设置访问器的属性。 如果您必须向它们添加逻辑,则必须创建一个带有支持字段的常用属性:

private bool _IsOn;

public bool IsOn
{ 
   get { return _IsOn; }
   set
   {
      Log(value);
      _IsOn = value;
   }
}

但是,在某处记录的财产不再是真实财产,在我看来这是一个严重的副作用。 我会把它变成一种方法:

private bool _isActive = false;

public void ChangeState(bool active)
{
      Log(active);
    _isActive = active;
}

public bool IsActivated => _isActive;

暂无
暂无

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

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