C# 通过派生类访问和修改对象
我正在尝试创建一个C# 通过派生类访问和修改对象,c#,wpf,C#,Wpf,我正在尝试创建一个BaseListWindow类作为其他ListWindow的基类。每个ListWindow操作一个不同对象列表(汽车、火车或飞机列表)。每个对象列表都是另一个称为车辆的对象的成员 public class Vehicles { private List<Car> _cars; private List<Train> _trains; // ... getters and setters too
BaseListWindow
类作为其他ListWindow
的基类。每个ListWindow
操作一个不同对象列表(汽车、火车或飞机列表)。每个对象列表都是另一个称为车辆的对象的成员
public class Vehicles
{
private List<Car> _cars;
private List<Train> _trains;
// ... getters and setters too
}
我有几个问题:
BaseListWindow
和派生类来访问和修改这些对象,这是一种好方法BaseListWindow
保存对象载体,以便它可以访问任何对象列表,但我的问题是访问基类中的这个对象列表。这很难,因为每个派生类的列表类型都不同
我希望我没有错过这一切的重点。
谢谢。我不知道如何回答你的问题。派生类的成员仅存在于派生类(或此派生类的派生类)中,因此不能在基构造函数中初始化它们。派生对象和基础对象中的_元素相同,因为它们是相同的对象。但本质上我认为你的主要问题是你混合了视图层和模型层。窗口类应该只显示数据,而不是存储数据。数据应该存储在模型层中,并且在这两者之间应该有一个ViewModel层。您的设计使您创建了一个派生的窗口类并将其抽象化:抽象控件很奇怪,重写控件使其抽象更奇怪。好吧,我认为我的方法是错误的,我将尝试更好地理解MVVM并应用它。谢谢你们两位!不要这样做。请参见MVVM并使用创建视图模型和视图集。然后,ViewModels可以从某个基类继承,您可以在该基类中放置所有的基本功能?我不能接受任何答案,因为没有。这条评论解决了我的问题,但我不能推翻他们。我不知道如何回答你的问题。派生类的成员仅存在于派生类(或此派生类的派生类)中,因此不能在基构造函数中初始化它们。派生对象和基础对象中的_元素相同,因为它们是相同的对象。但本质上我认为你的主要问题是你混合了视图层和模型层。窗口类应该只显示数据,而不是存储数据。数据应该存储在模型层中,并且在这两者之间应该有一个ViewModel层。您的设计使您创建了一个派生的窗口类并将其抽象化:抽象控件很奇怪,重写控件使其抽象更奇怪。好吧,我认为我的方法是错误的,我将尝试更好地理解MVVM并应用它。谢谢你们两位!不要这样做。请参见MVVM并使用创建视图模型和视图集。然后,ViewModels可以从某个基类继承,您可以在该基类中放置所有的基本功能?我不能接受任何答案,因为没有。这句话解决了我的问题,但我不能推翻他们。
public abstract class BaseListWindow<T> : Window where T : IListElem
{
protected Vehicles _vehicles;
public List<T> _element;
public BaseListWindow(Vehicles v, List<T> listElement)
{
_vehicles = v;
_element = listElement;
}
}
public partial class CarsListWindow : BaseListWindow<Car>
{
public CarsListWindow(Vehicle v, List<Car> listElement) : base(v, listElement)
{
_vehicles = v;
_vehicles.Cars = listElement;
}
}