[英]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.