Я следую этой статье за регистрацией событий SENS через COM, но я думаю, что что-то упустил. Я вызываю метод SubscribeToEvents, который написано в статье, наподобие этого:
EventSystemRegistrar.SubscribeToEvents("ManagedSENS EventSubscriber", "ManagedSENS.SensLogonInterop", subscriptionViewerID, this, typeof(SensLogon));
, что приводит к вызову этого метода:
private static String GetInterfaceGuid(Type type)
{
Object[] attributes = type.GetCustomAttributes(typeof(GuidAttribute), true);
return String.Format("{{{0}}}", ((GuidAttribute)attributes[0]).Value);
}
Проблема в том, что есть тип класса SensLogon, который они советуют писать, но у него нет атрибутов, поэтому метод генерирует исключение. Единственные атрибуты, которые, по сути, являются GuidAttributes, которые, как говорят, пишут, относятся к этим классам, которые не имеют ничего общего с классом SensLogon (по крайней мере, насколько я могу судить):
[ComImport, Guid("4E14FBA2-2E22-11D1-9964-00C04FBBB345")]
class EventSystem { }
[ComImport, Guid("7542E960-79C7-11D1-88F9-0080C7D771BF")]
class EventSubcription { }
[ComImport, Guid("AB944620-79C6-11d1-88F9-0080C7D771BF")]
class EventPublisher { }
[ComImport, Guid("cdbec9c0-7a68-11d1-88f9-0080c7d771bf")]
class EventClass { }
Возможно, я что-то здесь упускаю? Я должен был извлечь из этих классов или что-то? Класс SensLogon показан, но у него нет ни одного из этих атрибутов.
Кто-нибудь делал что-то подобное, чтобы зарегистрироваться в COM-событиях, или, может быть, может посмотреть, где я неправильно прочитал статью?