gpt4 book ai didi

c# - 如果我通过动态转换,为什么这个属性无法解析,但可以访问?

转载 作者:行者123 更新时间:2023-12-02 10:59:37 26 4
gpt4 key购买 nike

我的方法采用 Outlook.MailItem 作为参数。在检查 MailItem 对象并阅读文档后,我注意到它有一个名为 Sender 的属性。返回 AddressEntry .
当我想使用这个属性时,我得到了以下错误:Cannot resolve symbol 'Sender' ,发件人以红色突出显示。尝试构建并忽略突出显示会导致:

'Microsoft.Office.Interop.Outlook.MailItem' does not contain a definition for 'Sender' and no extension method 'Sender' accepting a first argument of type 'Microsoft.Office.Interop.Outlook.MailItem' could be found (are you missing a using directive or an assembly reference?)



奇怪的是,文档说该属性存在,当我调试时,我什至可以检查该值。 (我必须在这个旧项目上使用 VS2010,因此所有 System.__ComObject 的调试检查都不是很好,但我可以检查 Sender 的值,所以它存在。)

但是,当我施放 MailItemdynamic ,我可以按如下方式访问发件人,没有任何问题:
var sender = (AddressEntry)((dynamic)mailItem).Sender;

我在这里做错了什么?我目前将其归咎于 VS2010 缺乏更好的解释。

最佳答案

好的,首先感谢所有花时间思考的人。

原来 MailItem是一个接口(interface)(所以这就是为什么你在你的接口(interface)名称前面加上一个 I ,比如 IMailItem ),我有一个旧版本的 Microsoft.Office.Interop.Outlook;在我的解决方案中。一旦我将此(以及它所依赖的 Office 引用)更新到更新版本,我就可以访问 MailItem.Sender .

所以它在更新版本的文档中......我的错!

关于c# - 如果我通过动态转换,为什么这个属性无法解析,但可以访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46956495/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com