2
我用.net程序集替換(部分)Delphi COM庫。我已經將一些COM接口和枚舉移到了.net程序集中。除了使用{enum_type_name} _ {enum_value_name}命名約定將枚舉導出到類型庫之外,一切都很好。是否可以使用屬性指定COM枚舉字段名稱?
例
[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
}
我幾乎可以肯定有一種方法可以做到這一點,我只需要知道使用哪個屬性類。
不,不是一個選項。如果要控制名稱,請將其粘貼到.idl文件中並使用midl.exe進行編譯。或者只使用你已有的類型庫。 –