如何为另一个 class 更好的方法创建 属性

how to create property for another class better way

我有 class 个 class。在视图模型中,我有系统状态 属性,在另一个 class 中,我正在手写电脑名称...对于 150 台电脑,我为状态电脑创建 属性。清楚说明这一点的最佳方法是什么?

public class Computers
{
    public Computers()
    {
        computer1 = new SeriesViewModel();
        computer2 = new SeriesViewModel();
        computer3 = new SeriesViewModel();
        //over 150 computer
    }

    SeriesViewModel computer1 { get; set; }
    SeriesViewModel computer2 { get; set; }
    SeriesViewModel computer3 { get; set; }
    //over 150 computer
}

public class ComputerInfos: INotifyPropertyChanged
{
    public ComputerInfos()
    {
    }

    private string compname;
    private string serialno;

    public string ComputerName
    {
        get { return compname; }
        set
        {
            compname= value;
            OnPropertyChange(this,ComputerName );
        }
    }
    public string SerialNumber
    {
        get { return serialno; }
        set
        {
            serialno= value;
            OnPropertyChange(this,SerialNumber);
        }
    }
}

在主window中,我像下面这样在计算机上写,但是太费力和时间了。我怎样才能让它更容易?

public partial class MainWindow : Window
{
    private Computers computer;
    public MainWindow()
    {
        InitializeComponent();
        computer = new Computers ();
        DataContext = computer;
    }

    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        computer.computer1.ComputerName = "Computer 1";
        computer.computer1.SerialNumber = "1N-C1";
        computer.computer2.ComputerName = "Computer 2";
        computer.computer2.SerialNumber = "1N-C2";
        computer.computer3.ComputerName = "Computer 3";
        computer.computer3.SerialNumber = "1N-C3";
        // for each computers writing like this is bad
    }
}

在这种情况下,我们使用 ObservableCollection<T> class

您可以从here

查看

你可以这样使用ObservableCollection

public class Computers
{
    public Computers()
    {
        ComputerInfo = new ObservableCollection<ComputerInfos>();

        for(int i = 0; i<150; i++)
        {
            ComputerInfo.Add(new ComputerInfos());
        }
    }

    public ObservableCollection<ComputerInfos> ComputerInfo { get; }
}

对于 150 台计算机,您可以对每个 ComputerInfos class 到 ComputerInfo 集合使用 For Loop。 然后,您在 Main 中获取或设置每台计算机的信息 Windows 变得更容易。

public partial class MainWindow : Window
{
    private Computers computer;
    public MainWindow()
    {
        InitializeComponent();
        computer = new Computers ();
        DataContext = computer;
    }

    private void Window_Loaded(object sender, RoutedEventArgs e)
    {          
        for (int i = 1; i <=150; i++)
        {
            computer.ComputerInfo[i-1].ComputerName = "Computer " + i.Tostring();
            computer.ComputerInfo[i-1].SerialNumber = "1N-C" + i.ToString();
        }
    }
}