Я заменяю (часть) библиотеки Delphi COM библиотеку .net. Я перенес несколько COM-интерфейсов и перечислений в сборку .net. Все хорошо, за исключением того, что перечисления экспортируются в библиотеку типов с использованием соглашения об именовании {enum_type_name} _ {enum_value_name}.
Пример
[ComVisible(true)]
[Guid("318f9e87-444c-11d5-aed1-00105a758da4")]
public enum KeyIDEnum
{
keLeft = 0,
keCentre = 1,
keRight = 2
}
Становится
[
uuid(318F9E87-444C-11D5-AED1-00105A758DA4),
version(1.0)
]
typedef enum tagKeyIDEnum
{
KeyIDEnum_keLeft = 0,
KeyIDEnum_keCentre = 1,
KeyIDEnum_keRight = 2
} KeyIDEnum;
Я хотел бы знать, есть ли способ переопределить это поведение по умолчанию и указать имена значений перечисления, возможно, используя атрибут. Что-то вроде:
[ComVisible(true)]
[Guid("318f9e87-444c-11d5-aed1-00105a758da4")]
public enum KeyIDEnum
{
[Name("keLeft")]
keLeft = 0,
[Name("keCentre")]
keCentre = 1,
[Name("keRight")]
keRight = 2
}
Я почти уверен, что есть способ сделать это, мне просто нужно знать, какой класс атрибутов использовать.