我正在进行一些互操作,并需要传递一些GUID。是否有一种方法可以向枚举值添加GUID属性,并在它被编组时具有适当的值?
基本上,我正在尝试转换代码
#if !defined( STATIC_KSDATAFORMAT_SUBTYPE_PCM )
#define STATIC_KSDATAFORMAT_SUBTYPE_PCM\
DEFINE_WAVEFORMATEX_GUID(WAVE_FORMAT_PCM)
DEFINE_GUIDSTRUCT("00000001-0000-0010-8000-00aa00389b71", KSDATAFORMAT_SUBTYPE_PCM);
#define KSDATAFORMAT_SUBTYPE_PCM DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_PCM)
#endif
(和其他类似的内容)
并将它们用在枚举中,这样我就可以轻松指定适当的子类型格式。显然,我可能只需要使用字典或其他类似的方法,但我希望尽可能地使其透明。
做类似以下的事情会很好:
enum MyGuids : Guid
{
Guid1 = GUID("...") or just "..."
}
我可以使用一个类/结构体代替。
static class MyGuids
{
public static Guid flag1 = new Guid("9ED54F84-A89D-4fcd-A854-44251E925F09");
}
但唯一的问题在于没有办法将非托管结构中的Guid与此类关联起来。它被指定为Guid,如果我用MyGuids替换它,那么它就不再是Guid了。例如,我会失去类型安全性,因为任何guid都可能出现在字段中,而不仅仅是来自MyGuid的那些。
有什么想法吗?