首先让我说这段代码是在SharpDevelop 4.3中开发的,代码运行正常并给出了预期的结果,但是在调试方面达到这一点有点困难,因为监视窗口似乎不存在我预期的值。谁能告诉我是否应该做些什么来检查这个循环中的值?
例如的值mailItem.Subject
在手表中显示为:对象不是类型Microsoft.Office.Interop.Outlook._MailItem
(我对下划线有点困惑,因为我读到它只是一个命名约定,我相信我已经根据自己的喜好在整个项目中删除了下划线) 但我注意到手表中的 mailItem 显示为System.__ComObject
- 这是我丢失的线索吗?
//LOOPING THROUGH MAIL ITEMS IN THAT FOLDER.
foreach (Microsoft.Office.Interop.Outlook.MailItem mailItem in fldMailItems.Items)
{
if (mailItem.Body != "")
{
MyMail mail = new MyMail();
mail.Subject = (mailItem.Subject == null) ? string.Empty : mailItem.Subject;
//mail.
mailItems.Add(mail);
}
}
为了进一步说明与Redemption RDOMail一起应用的问题,消息框会按您的预期显示,但监视窗口并未显示属性 SenderName 甚至存在 - 它显示基类作为值:对象,其中_Identity
和Identity
两者都为空,还有一个非公共成员,m_ObjjectToDataMap
其值也为空。
这是一个导致同样头痛的示例:
void ConnectOutlook()
{
session = new Redemption.RDOSession();
session.Logon();
inbox = session.GetDefaultFolder(rdoDefaultFolders.olFolderInbox);
}
void DisconnectOutlook()
{
session.Logoff();
session = null;
}
void MainFormLoad(object sender, EventArgs e)
{
try
{
ConnectOutlook();
int i=0;
foreach ( RDOMail mailItem in inbox.Items.Restrict("[MessageClass] = 'IPM.Note'"))
{
i++;
MessageBox.Show(mailItem.SenderName);
}
....