私はDelphiのCOMライブラリの一部を.netアセンブリに置き換えています。私はいくつかのCOMインターフェイスとenumを.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でコンパイルします。または、既に持っているタイプライブラリを使用してください。 –