我的方法将 Outlook.MailItem
作为参数。在检查MailItem对象并阅读文档后,我注意到它具有一个名为 Sender
的属性,该属性返回 AddressEntry
。
当我想使用此属性时,出现以下错误:Cannot resolve symbol 'Sender'
,发件人以红色突出显示。尝试构建并忽略以下突出显示的结果:
很奇怪,文档说该属性存在,当我调试时,我什至可以检查该值。 (我必须在这个旧项目上使用VS2010,因此所有System.__ComObject
的调试检查都不是一件好事,但是我可以检查Sender
的值,所以它存在。)
但是,当我将MailItem
转换为dynamic
时,我可以按以下方式访问发件人,而不会出现任何问题:
var sender = (AddressEntry)((dynamic)mailItem).Sender;
我在这里做错了什么?我目前将其归咎于VS2010,因为缺少更好的解释。
最佳答案
好的,首先感谢所有花时间思考的人。
原来MailItem
是一个接口(interface)(所以这就是为什么要在接口(interface)名称前加上I
,例如IMailItem
的原因),并且我的解决方案中有较旧的Microsoft.Office.Interop.Outlook;
。一旦将此(以及它所依赖的Office
引用)更新为新版本,就可以访问MailItem.Sender
。
原来是在新版本的文档中……我的天哪!