tlbexp.exe изменяет случай имен методов

У меня есть довольно странная проблема. Я экспортирую интерфейс от библиотеки C# до COM. Я включил 'регистр с COM' установка проекта, таким образом, это звонит, tlbexp.exe для создания типа освобождает.

Мы используем Camel-регистр на наших именах методов, и я заметил, что экспортируемая библиотека типов изменяет их любой метод, который, оказывается, совпадает с именем класса к Pascal-регистру...

например,

interface IFoo
{
void randomClass()
}

class RandomClass
{
}

Экспортируемый IFoo в lib типа определяет IFoo-> RandomClass () вместо IFoo-> randomClass ()

Какие-либо идеи о том, что вызывает это и как остановить его?

5
задан ljbade 28 June 2010 в 05:37
поделиться

1 ответ

Поскольку в COM регистр не учитывается, «RandomClass» и «randomClass» являются одним и тем же символом в таблице выходной библиотеки. (Это отчасти причина того, почему рекомендации .NET рекомендуют PascalCasing для имен классов и методов.)

Тот, который будет выбран, будет первым, который испускает компилятор, и это довольно недетерминировано с точки зрения программиста. Посмотреть!

Вы можете выбрать один или другой, используя параметр tlbexp / names , но оба корпуса не могут сосуществовать в библиотеке.

Чтобы использовать файл имен tlbexp, вы просто создаете файл со списком идентификаторов, по одному в каждой строке:

RandomClass
SomeOtherIdentifier

Затем вы вызываете его так:

tlbexp MyAssembly.dll /names=MyNames.txt

tlbexp затем будет использовать версию символа, определенного в именах файл.

6
ответ дан 14 December 2019 в 13:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: