如果我有Car
,Bus
和UnknownVehicle
派生自Vehicle
,那么基于我的数据库中的“类型”字段,我可以投射到不同的根据条件输入?
像这样:
public IQueryable<Vehicle> GetAllVehicles()
{
return from vehicle in dc.Vehicles
select vehicle.Type == "C" ? new Car(vehicle.ID) : vehicle.Type == "B" ? new Bus(vehicle.ID) : new UnknownVehicle(vehicle.ID);
}
答案 0 :(得分:0)
您可以在Vehicle上创建一个静态FactoryMethod(它是一个模式),它将返回您需要的类的对象。
类似的东西:
public class Vehicle
{
...
public static Vehicle GetVehicle( VehicleType type, int id )
{
switch( type )
{
case 'C':
return( new Car( id ) );
case 'B':
return( new Bus( id ) );
default:
return( new UnknownVehicle( id ) );
}
}
}
并在像
这样的代码中使用它public IQueryable<Vehicle> GetAllVehicles()
{
return( from vehicle in dc.Vehicles
select Vehicle.GetVehicle( vehicle.Type, vehicle.ID ) );
}
虽然为了切换工作,你的Type应该是char,而不是string。但无论如何你都使用单字母类型。