C# - 引用MVC数据模型中的对象

时间:2015-03-22 22:13:42

标签: c# oop model-view-controller reference

我正在使用C#中的MVC模式构建一个软件。该软件具有复杂的数据模型,其中包含许多类,并在运行时创建这些模型类的对象(由用户控制)。但是,一个类(ParkingGarage)的对象引用另一个类的对象(Car) - 因此ParkingGarage对象存储对所有Car个对象的引用(在一个数组),目前停放在特定的车库。

班级Car

- Property (String) Model
- Property (String) Color
- Property (String) LicensePlate

班级ParkingGarage

- Property (String) Name
- Property (String) LocationAddress
- Property (Array) ParkedCars

现在将Car对象存储在ParkingGarage对象的数组中时,我可以只有一个充满Car个对象的数组,还是应该只存储某种类型的标识符(也许是Car类的属性uniqueIdentifier?

我目前的假设是:如果我将Car个对象添加到ParkingGarage对象的Array ParkedCars中,则该数组仅包含对该car对象的引用,对吧?我对此有任何疑问吗?

1 个答案:

答案 0 :(得分:1)

将内存管理问题留给运行时,并使用通用列表类型List<>而不是数组来保存数据。 List<T>代表可增长的对象列表,并提供AddRemove等方法,实际上操作和覆盖T的数组以产生所需的结果

以下是一些可以作为指南使用的代码。

public class Car
{
    public int Id { get; set;}
    public string Model { get; set; }
    public string Color { get; set; }
    public string LicensePlate { get; set; }

}

public class ParkingGarage
{
    private List<Car> parkedCars;

    public int Id { get; set; }
    public string Name { get; set; }
    public string LocationAddress { get; set; }

    public List<Car> ParkedCars
    {
        get { return parkedCars; }
    }

    public ParkingGarage()
    {
        parkedCars = new List<Car>();
    }

    public void AddCar(Car car)
    {
        // perform validation
        parkedCars.Add(car);
    }
}

要从数据库中检索Cars,您可以使用存储库模式:

public class CarRepository
{
    public List<Car> FindAll()
    {
        // Code to retrieve all cars 
        List<Car> cars = new List<Car>();
        // Retrieve All rows from Cars Table and populate the List
        return cars;           
    }

    public List<Car> FindAllWith(string carModel)
    {
        // Code to retrieve all cars with a particular model
    }

    public List<Car> FindAllWith(int parkingGarageId)
    {
        // Code to retrieve all cars from a particular parking garage
    }

    public void Save(Car car)
    {
       // Code to save car to the database
    }

}

同样,不要担心内存管理,你最好专注于为你的项目创建一个好的模型。