[英]How to change a class without re-coding?
我正在我的项目中创建一个驾驶执照对象,员工都将拥有一个与他们唯一的时钟编号相关联的驾驶执照对象。 我的数据库中有一个单独的表用于驾驶执照,但将来需要添加更多类型的车辆,是否可以在不重新编码的情况下执行此操作? 我的数据库中的列与下面类的属性相同
public class LicenseDTO
{
public int ClockNo { get; set; }
public bool CBalance { get; set; }
public bool MR16 { get; set; }
public bool OrderPicker { get; set; }
public bool Reach { get; set; }
public bool Pedestrian { get; set; }
public bool Lorry { get; set; }
public bool Sweeper { get; set; }
public bool Washer { get; set; }
}
编辑
我试图尽我所能创造这个,但我觉得它真的很啰嗦,可以用更有效的方式来完成。 这是我的代码的更新版本。
public class LicenseDTO
{
public int ClockNo { get; set; }
public List<Common.VehicleTypeDTO> Vehicles { get; set; }
}
public class VehicleTypeDTO
{
public string VehicleType { get; set; }
public bool Allowed { get; set; }
}
private void btnClockCardIn_Click(object sender, EventArgs e)
{
Common.LicenseDTO License = new Common.LicenseDTO();
List<Common.VehicleTypeDTO> Vehicles = new List<Common.VehicleTypeDTO>();
Common.VehicleTypeDTO CBalance = new Common.VehicleTypeDTO();
Common.VehicleTypeDTO MR16 = new Common.VehicleTypeDTO();
License.Vehicles = Vehicles;
CBalance.VehicleType = "CBalance";
CBalance.Allowed = true;
MR16.VehicleType = "MR16";
MR16.Allowed = false;
License.Vehicles.Add(CBalance);
License.Vehicles.Add(MR16);
foreach (Common.VehicleTypeDTO Vehicle in License.Vehicles)
{
MessageBox.Show(Vehicle.VehicleType + " " + Vehicle.Allowed);
}
}
为什么不创建一个包含车辆类型的表格? 将来您可以访问您的表并插入更多类型。
public class VehicleTypeDTO
{
public int Id{ get; set; }
public string Name{ get; set; }
}
public class LicenseDTO
{
public int Id { get; set; }
public List<VehicleTypeDTO> VehicleTypes { get; set; }
}
您应该在类型为 Vehicle 的数组旁边创建了一个具有 ClockNo 和 CBalance 属性的实体 LicenseDTO。 这将是一个界面。 接口 Vehicle 可以定义车辆具有的任何通用方法。 并且所有未来的车辆都必须实现该接口。 这样您就不必更改任何代码。 未经编辑,您当前的代码无法“更改”。 您可以尝试使用另一个实现上述接口的实体类来扩展您的 LicenseDTO 类。 但没有更多你可以不编辑。
如果您想要可维护性,请从接口、存储库模式、抽象类和依赖注入开始。
不要在数据库中使用多个位列来指示不同类型的车辆,而是使用单个VehicleType
表。 然后,您可以根据需要添加任意数量的不同车辆类型,并使用 VehicleTypeID 来唯一标识它们。 然后,您可以将越来越多的车辆类型添加到表中,而无需编写更多代码。
VehicleType
VehicleTypeID int
VehicleTypeName varchar(50)
public class LicenseDTO
{
public int ClockNo { get; set; }
public int VehicleTypeID { get; set; }
}
如果您想针对单个 ClockNo 拥有多种类型的车辆,请使用 int 列表:
public class LicenseDTO
{
public int ClockNo { get; set; }
public List<int> VehicleTypes { get; set; }
}
或者,您可以引用 VehicleType 对象,而不仅仅是 ID。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.