Przeciążenia w interopie COM (CCW) - nazwy IDispatch obejmują przyrostek (_2, _3, itd.)

Mam zarządzany zestaw zawierający kilka klas, a te klasy mają przeciążone metody. Udostępniam zespół do rozmówców COM / IDispatch przez

[ComVisible(true)]

..i także ustawienie właściwego Guida na samym zespole. Nie definiuję jawnego interfejsu dla interopera COM. Wszystko odbywa się dynamicznie. biegnęregasm.exe /codebase na zarządzanej bibliotece DLL i rejestruje ją na potrzeby współdziałania COM.

Kiedy uruchamiam OleView, widzę ProgId różnych klas w zespole. Ale przeglądając te Progids i rozwijając węzeł IDispatch, nie ma informacji TypeLib dla tych klas.

Mimo to ze skryptu mogę wywołać metodę, która akceptuje zero argumentów lub metodę, która akceptuje jeden argument. Jeśli istnieje również przeciążenie, które akceptuje więcej niż jeden argument, nie mogę wywołać tej metody według nazwy. Błąd, który otrzymuję konsekwentnie, jest

Microsoft VBScript runtime error: Wrong number of arguments or invalid property assignment:  <methodname>

Z tego zrozumiałem, że klienci COM / IDispatch nie byli w stanie poprawnie rozwiązać przeciążonych metod na obiekcie ujawnionym przez interop COM.

Potem dodałem

[ClassInterface(ClassInterfaceType.AutoDual)]

... do każdej z omawianych klas. Poregasm.exe w bibliotece DLL widzę informacje o typelib dla każdej metody w węźle IDispatch.

Odkryłem, że przeciążone metody automatycznie otrzymują nazwę zawierającą dołączony przyrostek. MetodaX ujawni przeciążenia w automatycznie wygenerowanym zespole typelib jako MethodX, MethodX_2, MethodX_3 i tak dalej.

I odkryłem, że odwołując się do nazw metod z tymi przyrostkami, mogłem wywołać przeciążone metody, chociaż nie z pospolitą nazwą.

Co ciekawsze, gdybym następnie usunął[ClassInterface(ClassInterfaceType.AutoDual)] z klas mogłemnadal wywołaj przeciążone metody w ten sposób, unikając w ten sposóbWrong number of arguments or invalid property assignment błąd.

Moje pytanie brzmi: czy to zachowanie - dołączanie przyrostków numerycznych do nazw członków - jest stabilne? udokumentowane? niezawodny?

questionAnswers(3)

yourAnswerToTheQuestion