私はreflectionを使用してすべてのイベントを取得し、これらのイベントのいずれかに追加できる代理人を作成しようとしています。これまでのコードは です。ありがとうございます。さて、これは私にMicrosoft.Office.Interop.Word.ApplicationEvents4_DocumentBeforeSaveEventHandlerのEventInfoを与えるWord - Reflecting Events
EventInfo p = getEvent(this.Application, "DocumentBeforeSave");
public EventInfo getEvent(Word.Application wordApp, string eventName)
{
Type wordType = wordApp.GetType();
EventInfo[] f = wordApp.GetType().GetEvents();
EventInfo result = (from o in f
where o.Name == eventName
select o).FirstOrDefault();
return result;
}
:
まあアイデアは、ビットのような方法でこのようなDocumentBeforeSaveなどのイベントの名前を渡すことです。私には、Word.ApplicationEvents4_DocumentBeforePrintEventHandlerのようなものがあり、+ =;
EventInfoには、AddEventHandlerメソッドがあります。 DocumentBeforeSaveイベントが発生したときに私自身の代理人を付けて処理できることを願っています。
問題は、私はちょうどデリゲートの権利を得ることができないようです。私はこれで遊んでいます:
MethodInfo[] myArrayMethodInfo = msw.GetMethods(BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly);
MethodInfo r = (from o in myArrayMethodInfo
where o.Name == "add_" + p.Name
select o).FirstOrDefault();
Delegate del = Delegate.CreateDelegate(p.EventHandlerType,r, false);
しかし、代議員は常にnullです。これは可能ではないのですか、それとも間違っていますか?
おかげ
「msw」とは – SLaks
mswは次のように定義されています。Word.Application ms =(Word.Application)this.Application; タイプmsw = ms.GetType(); –
これはCOMイベントです。彼らは異なった働きをします。また、加算メソッドのデリゲートを作成しても良いことはありません。さらに、それは加算器の間違ったデリゲート型です。 'Action'が必要です。 –
SLaks