Visual Studio 2010 を使用して C# で記述された Outlook 2010 アドイン プロジェクトがあります。
アドインは Outlook 2013 で全体的に機能しているため、Outlook 2013 の新しい InlineResponse 機能で問題が発生しないように、少し変更を加えたいと思います。
VS 2012 にアップグレードせずに InlineResponse イベントのイベントハンドラーを登録したい (インストーラー プロジェクトが削除されたため)。リフレクションを使用して新しいイベントを取得する方法について読みました。
例外は発生しませんが、イベントはハンドラーをトリガーしません (OnInlineResponse は呼び出されません)。
public partial class ThisAddIn
{
Outlook.Explorer _explorer;
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
_explorer = Application.ActiveExplorer();
AddInlineResponseHandler();
}
private void AddInlineResponseHandler()
{
var einfo = _explorer.GetType().GetEvent("InlineResponse", BindingFlags.Public | BindingFlags.Instance);
if (einfo != null)
{
var handler = Delegate.CreateDelegate(einfo.EventHandlerType, this, this.GetType().GetMethod("OnInlineResponse", BindingFlags.NonPublic | BindingFlags.Instance), false);
einfo.AddEventHandler(_explorer, handler);
}
}
private void OnInlineResponse()
{
System.Windows.Forms.MessageBox.Show("InlineResponse");
}
}
望ましい動作を達成する方法について何か提案はありますか?