Я делаю какое-то взаимодействие и мне нужно передать несколько 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.например, я теряю безопасность типов, так как любой гид может оказаться в поле, а не только из MyGuid.
Есть идеи?