
一、情景重现我在即使窗口输入message.From[0]输出如下信息{123456 [123456qq.com](mailto:123456qq.com)} Address: 123456qq.com Domain: [qq.com](https://link.wtturl.cn/?targethttps%3A%2F%2Fqq.comsceneimaid497858langzh) Encoding: {System.Text.UTF8Encoding.UTF8EncodingSealed} IsInternational: false LocalPart: 123456 Name: 123456 Route: {}为何我写代码时访问不到Address例如我输入message.From[0].Address会显示Address变量不存在点不出 Address二、原因message.From编译时类型声明为InternetAddressList抽象基类只包含少量属性不含Address但是调试器输出的是运行时实际类型MailboxAddress它的子类C# 是强类型语言编译期只能访问声明类型的成员因此访问不到其子类内容。三、如何处理1.通过反射查询其子类即使窗口输入message.From[0].GetType()输出信息{Name MailboxAddress FullName MimeKit.MailboxAddress} Assembly: {MimeKit, Version4.17.0.0, Cultureneutral, PublicKeyTokenbede1c8a46c66814} AssemblyQualifiedName: MimeKit.MailboxAddress, MimeKit, Version4.17.0.0, Cultureneutral, PublicKeyTokenbede1c8a46c66814 Attributes: Public从中可得Name MailboxAddress是它的子类2.强制类型转化并访问知道其子类后转化一下再点出来即输入如下信息即可获取(message.From[0] as MailboxAddress)?.Address输出123456qq.com