C# 使用类创建委托不会';如果代表包含一个“t”,则不工作;“出去”;论点

C# 使用类创建委托不会';如果代表包含一个“t”,则不工作;“出去”;论点,c#,delegates,outlook-addin,factory,C#,Delegates,Outlook Addin,Factory,我正在创建Outlook addins,对于某些事件,库需要连接到某个委派的函数 我需要以下资料: public delegate void ItemEvents_10_OpenEventHandler(out bool Cancel) public delegate void ItemEvents_10_AttachmentAddEventHandler(Attachment Attachment) 为了提供这些函数,我创建了一个类来生成这些函数: public class MyHandle

我正在创建Outlook addins,对于某些事件,库需要连接到某个委派的函数

我需要以下资料:

public delegate void ItemEvents_10_OpenEventHandler(out bool Cancel)
public delegate void ItemEvents_10_AttachmentAddEventHandler(Attachment Attachment)
为了提供这些函数,我创建了一个类来生成这些函数:

public class MyHandlers
{
    Outlook.MailItem mailItem = null;

    public MyHandlers(Outlook.MailItem mMailItem)
    {
        mailItem = mMailItem;
    }

    public void Handle_Open(out bool Cancel)
    {
        Cancel = false;
        // Do some stuff
    }

    public void Handle_Add_Attachment(Attachment Attachment)
    {
        // Do some stuff
    }
}
我是这样使用工厂的:

Outlook.MailItem mailItem = item as Outlook::MailItem;
MyHandlers mh = MyHandlers(mailItem);
mailItem.Open += new Outlook.ItemEvents_10_OpenEventHandler(mh.Handle_Open);
mailItem.AttachmentAdd += new Outlook.ItemEvents_10_AttachmentAddEventHandler(mh.Handle_Add_Attachment);
对于
ItemEvents\u 10\u attachmentadeventhandler
它工作正常

对于
ItemEvents\u 10\u OpenEventHandler
我有以下错误:
没有重载“Handle\u Open”匹配委托“ItemEvents\u 10\u OpenEventHandler”

两个签名之间的唯一区别是“out”关键字

签名似乎很好(),如果我不使用“类工厂”技巧,它工作得很好(但我需要这个技巧来跟踪
mailItem


我错过了什么?

您使用的是什么版本的Outlook?当我在机器上添加COM引用并查看
ItemEvents\u 10\u OpenEventHandler
时,其
Cancel
参数标记为
ref
,而不是
out
。(2016年展望)。如果我更改
Handle\u Open
以匹配它(并将工厂方法中出现的
C++/
切换为C),它的编译就可以了。太棒了!我仍然是C#的noob,不知道
ref
out
之间的区别!您使用的是什么版本的Outlook?当我在机器上添加COM引用并查看
ItemEvents\u 10\u OpenEventHandler
时,其
Cancel
参数标记为
ref
,而不是
out
。(2016年展望)。如果我更改
Handle\u Open
以匹配它(并将工厂方法中出现的
C++/
切换为C),它的编译就可以了。太棒了!我仍然是C#的noob,不知道
ref
out
之间的区别!