我正在关注这篇文章以通过 COM 注册 SENS 事件,但我认为我遗漏了一些东西。我正在调用文章说要编写的 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 事件,或者也许可以看到我在哪里不正确地遵循了这篇文章?