我正在使用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对象的引用,对吧?我对此有任何疑问吗?
答案 0 :(得分:1)
将内存管理问题留给运行时,并使用通用列表类型List<>
而不是数组来保存数据。 List<T>
代表可增长的对象列表,并提供Add
和Remove
等方法,实际上操作和覆盖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
}
}
同样,不要担心内存管理,你最好专注于为你的项目创建一个好的模型。