C# 使用类创建委托不会';如果代表包含一个“t”,则不工作;“出去”;论点
我正在创建Outlook addins,对于某些事件,库需要连接到某个委派的函数 我需要以下资料: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
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
之间的区别!