c#中类中属性的最佳语法

本文关键字:最佳 语法 属性 | 更新日期: 2023-09-27 18:04:35

我是c#编程新手。我正在构建一些类,并在教程中找到不同的样本。我还认为,为了保持WPF表单显示正确的值,您需要实现INotify.

我想我的问题有两部分。我真的需要我通知和一个自定义方法,当属性改变时触发吗?

这是最好的系统来定义我的类吗?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Diagnostics;
namespace LakesideQTS
{
    public class Machine : BaseModel, IDataErrorInfo
    {
    private int _MachineID; 
    private string _Description;
    public int MachineID 
    {
        get { return _MachineID; }
        set { _MachineID = value; OnPropertyChanged1("MachineID"); }
    }
    public string Description 
    {
        get { return _Description; }
        set { _Description = value; OnPropertyChanged1("Description"); }
    }
    }
}

好像要打很多字,又长又乱。是否有一种方法来调用OnPropertyChanged1()与较新的语法风格?像这样:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Diagnostics;
namespace LakesideQTS
{
    public class Machine : BaseModel, IDataErrorInfo
    {
    public int MachineID {get;set; OnPropertyChanged1("MachineID");}
    public string Description {get;set; OnPropertyChanged1("MachineID");)}
    }
}

感谢你们提供的任何帮助!

c#中类中属性的最佳语法

不行,不行。

你要么有一个像这样的基本属性:

public int MachineID { get; set; }

或者你有一个带有显式支持字段的完整属性:

private int _MachineID;
public int MachineID
{
    get { return _MachineID; }
    set
    {
        _MachineID = value;
        OnNotifyPropertyChanged("MachineID");
    }
}
只有后一种语法允许您做的不仅仅是存储值。

没有办法编写更少的代码来实现它。

为了节省时间和避免手写代码,您可以在Visual Studio中使用适当的代码片段。

使用方法:正确输入并按TAB 2次。

实现INotifyPropertyChanged(可能通过您的BaseModel类)的主要原因是您将在模型对象属性上使用GUI的对象。这样,当你的模型对象属性改变时,GUI控件将会自我更新。

我发现用INotifyPropertyChanged做一个带有支持字段和通知的属性的最好方法是使用Resharper(在那里你也会有很多其他有用的优点)并遵循Nico收据。如果你遵循这一点,你将节省大量的时间和重复性工作的精力。它需要一些时间来设置,但之后你会节省很多。好运!