У меня есть DLL на основе ATL / COM, написанная на VC ++ 6.0. До недавнего времени между моими COM-интерфейсами и классами существовало однозначное соответствие. Например, предположим, что был интерфейс ICar; затем был также класс CCar, который реализовал его, и ни один класс, кроме CCar, не реализовал ICar, а CCar не реализовал никакого интерфейса (моего), кроме ICar. Аналогично IPlane и CPlane. Определения могут быть примерно такими:
В ICar были функции «StepOnGas» и «MaxPassengers»; IPlane имел функции «LowerLandingGear» и «MaxPassengers».
Недавно я изменил его так, чтобы появился интерфейс IVehicle, у которого нет соответствующего класса CVehicle, и который реализуют как CCar, так и CPlane. Итак:
В ICar есть «СтепОнГаз»; IPlane имеет "LowerLandingGear"; У IVehicle есть «MaxPassengers». CCar использует ICar и IVehicle; CPlane поддерживает IPlane и IVehicle.
Это работает нормально, но с точки зрения клиента DLL это немного неудобно; у них есть ICar, и они хотят знать, сколько пассажиров он может вместить. Раньше они могли просто спросить; теперь они должны прыгнуть через обруч превращения его в автомобиль, прежде чем они смогут попросить об этом.
То, что я хотел бы сделать, было бы примерно следующим:
В ICar есть «StepOnGas» и «MaxPassengers»; IPlane имеет "LowerLandingGear" и "MaxPassengers"; У IVehicle есть «MaxPassengers». CCar по-прежнему поддерживает как ICar, так и IVehicle, а CPlane по-прежнему реализует как IPlane, так и IVehicle.
Я хочу, чтобы для CCar был один-единственный «MaxPassengers», и чтобы он был доступен как из ICar, так и из IVehicle; аналогично, один-единственный "MaxPassengers" для CPlane, доступный как из IPlane, так и из IVehicle.
Вызовет ли это какие-нибудь проблемы? Придется ли мне делать что-то особенное, кроме добавления «MaxPassengers» в IDL для ICar и IPlane?
В случае необходимости, клиенты этой DLL написаны как на VC ++ 6.0, так и на VB6.
Заранее благодарим за любую помощь.
О, это было бы здорово.Я не знал, что вы можете сделать это в IDL.Я постараюсь выяснить, как это сделать.
Большое спасибо!
– Ptah- Opener of the Mouth13 ноября 2009, 21:21