我有一个用VC ++ 6.0编写的基于ATL / COM的DLL。直到最近,我的COM接口和类之间还是一一对应的。例如,假设有一个ICar接口;然后还有一个实现它的CCar类,除了CCar实现ICar之外没有其他类,并且CCar除了ICar之外没有实现任何接口。同样,IPlane和CPlane。定义可能类似于:
ICar具有功能“ StepOnGas”和“ MaxPassengers”; IPlane具有“ LowerLandingGear”和“ MaxPassengers”功能。
最近,我对其进行了更改,以便有一个IVehicle接口,该接口没有相应的CVehicle类,并且由CCar和CPlane都实现。所以:
ICar具有“ StepOnGas”; IPlane具有“ LowerLandingGear”; IVehicle具有“ MaxPassengers”。 CCar实现了ICar和IVehicle; CPlane实现了IPlane和IVehicle。
这很好,但是从DLL客户端的角度来看这有点痛苦;他们有一辆ICar,他们想知道它可以容纳多少乘客。以前,他们可以问这个问题。现在,他们必须跳过将其更改为IVehicle的过程,然后才能提出要求。
所以我想做的更多是这样的:
ICar具有“ StepOnGas”和“ MaxPassengers”; IPlane具有“ LowerLandingGear”和“ MaxPassengers”; IVehicle具有“ MaxPassengers”。 CCar仍然实现ICar和IVehicle,而CPlane仍然实现IPlane和IVehicle。
我希望CCar只能有一个“ MaxPassengers”,并且可以从ICar和IVehicle访问它。同样,CPlane也只有一个“ MaxPassengers”,并且可以从IPlane和IVehicle进行访问。
这会引起任何问题吗?除了在ICar和IPlane的IDL中添加“ MaxPassengers”之外,我是否还需要做其他特定的事情?
万一有问题,可以使用VC ++ 6.0和VB6编写此DLL的客户端。
在此先感谢您的帮助。
哦,那太好了。我不知道您可以在IDL中做到这一点。我将研究弄清楚做到这一点的语法。
非常感谢!
– Ptah- Opener of the MouthNovember 13, 2009 21:21