我有一个使用 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");
}
}
有什么建议我可以实现所需的行为吗?