Support Statement: Dealing with name clashes in COM stub classes
One of the common build errors we encounter is the following:
<!--VBP: BayerTC.vbpERRNUM: CS0102: The type 'TrueOleDBGrid70.TDBGrid' already contains a definition for 'FetchRowStyle'NETSRC: C:\gmClients\AmerisourceBergen\proj\deploy\BayerTC_std_csh\externs\TrueOleDBGrid70.cs@986public event TrueDBGridEvents_FetchRowStyleEventHandler FetchRowStyle;-->This occurs when a COM API has a naming collision between two members in a given class.
Most frequently, one of the two members is an event because in COM, the inbound interface (i.e., event handlers) are in a different class from the outbound interface (i.e., automation) so there was no clash. But when we merge these two interfaces into a stub class, we get a clash.
The typical fix is to find the clashing handler and change the netName attribute by adding “Event”, like this:
<event id="FetchRowStyle" netName="FetchRowStyleEvent" <--- changednetHandler="AxTrueOleDBGrid70.TrueDBGridEvents_FetchRowStyleEventHandler" netArgs="AxTrueOleDBGrid70.TrueDBGridEvents_FetchRowStyleEvent">I propose that either the IDF generator or the stub generator detect and prevent these clashes.