Если при написании кода вы знаете, как выглядит отображение, вы можете установить на Dictionary
с отображениями:
private Dictionary<Type, Type> _vehicleToControlTypeMappings = new Dictionary<Type, Type>();
Загрузка отображений при запуске:
_vehicleToControlTypeMappings.Add(typeof(Car), typeof(CarControl));
_vehicleToControlTypeMappings.Add(typeof(Plane), typeof(PlaneControl));
... и укажите способ получения нового элемента управления на основе транспортного средства:
private Control GetVehicleControl(IVehicle vehicle)
{
Control result = (Control)Activator.CreateInstance(
_vehicleToControlTypeMappings[(vehicle as object).GetType()]
);
// perform additional initialization of the control
return result;
}
Затем вы можете просто передать объекты типов, которые реализуют IVehicle
, в метод:
IVehicle vehicle = new Car();
Control newctl = GetVehicleControl(vehicle);