この記事に従って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 イベントに登録するのに似たようなことをした人はいますか? あるいは、私がどこで記事を不適切にフォローしたかを確認できますか?