C# 在C语言中,有没有什么捷径可以让你得到它;并设置;对PropertyChanged的哪个调用?

C# 在C语言中,有没有什么捷径可以让你得到它;并设置;对PropertyChanged的哪个调用?,c#,C#,我使用以下代码在应用程序中设置属性: string _backgroundColor; public string BackgroundColor { get => _backgroundColor;     set => SetProperty(ref _backgroundColor, value); } 及 我记得读过一些关于在C中可以使用{get;set;}的内容。在这个例子中,有没有什么方法可以使用它,这样我就不必自己一直声明局部变量了?您的代码已经显示了实现IN

我使用以下代码在应用程序中设置属性:

string _backgroundColor;
public string BackgroundColor
{
    get => _backgroundColor;
    set => SetProperty(ref _backgroundColor, value);
}


我记得读过一些关于在C中可以使用{get;set;}的内容。在这个例子中,有没有什么方法可以使用它,这样我就不必自己一直声明局部变量了?

您的代码已经显示了实现INotifyPropertyChanged的类中属性的典型快捷方式。使用普通C没有比这更短的方法了。如果只使用{get;set;},则无法调用getter和setter中的任何内容


如果您只是想自动添加PropertyChanged调用,并对其失去一些控制,您可以研究面向方面的编程,例如使用商业或开源。这些工具在编译时/编译后修改您的代码,并允许规则修改您的代码。

我看到了使用PostSharp的[NotifyPropertyChanged]的建议。我的责任是提到一个更高级、更自由的替代方案:Stepen Cleary的计算属性。

澄清:Postsharp允许您编写简短的表格,即

string { get; set; }  
以及火警通知。 这是计算属性的唯一优势,它们有点冗长,但仍然不需要备份字段:

{
    get { return Property.Get(string.Empty); }
    set { Property.Set(value); }
}
您很快就会发现,尽管键入的数量是一个次要问题,但主要的挑战是依赖于其他属性的属性,而这正是CalculatedProperties在所有方面击败PostSharp的地方

博士后:

如果属性getter从其类或委托调用虚拟方法,或在不使用规范格式this.field.property的情况下引用另一个对象的属性,则PostSharp将生成错误,因为它无法在生成时解析此类依赖关系。当属性getter包含复杂的数据流(例如循环)或对除其他类的属性getter之外的方法的调用时,也会受到同样的限制。 发生这种情况时,您可以重构代码,以便PostSharp自动分析代码,也可以接管分析代码的责任

这些限制均不适用于计算特性。它可以做循环,虚拟方法,LINQ到对象,基本上任何疯狂的运行时依赖关系,你可以想象,不管多么间接,依赖关系图在运行时会重新布线,只是毫无仪式地工作。
它们也更快、更免费。

没有内置功能。您当然可以为此调用一些小方法,但要使它正确处理所有类型,它很快就会变得比直接添加方法调用更复杂。简单地说:不。只要在getter/setter中实现任何逻辑,您就需要backing字段。顺便说一下:编译器会在自动实现的属性get的情况下为您创建它;不管怎样,为你设置。渴望c/c++和macros@MickyD我每天都要感谢诸神安德斯·海尔斯伯格(Anders Hejlsberg)、马兹·托格森(Mads Torgersen)等人,因为他们没有添加宏或模板C@LasseVågsætherKarlsen lol.生活危险;
{
    get { return Property.Get(string.Empty); }
    set { Property.Set(value); }
}