首先让我说这段代码是在SharpDevelop 4.3中开发的,代码运行良好,并给出了预期的结果,但在调试方面要达到这一点有点困难,因为观察窗口似乎没有像我预期的那样显示值。有人能告诉我我是否应该做些什么来检查这个循环中的值吗?
例如,mailItem.Subject
的值在手表中显示为:Object的类型不是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是否存在-它将基类显示为值:object,其中_Identity
和Identity
都为null,以及另外一个具有m_ObjjectToDataMap
的非公共成员,其值也为null
下面是一个引起同样头痛的例子:
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);
}
....
文件夹中的所有项目都会发生这种情况吗?你需要确保你真的有一个定期的消息,机器人一个报告项目。
这不适用于赎回,因为在赎回中,所有消息项目(RDOReportItem、RDOMeetingIrtem等)都源自RDOMail。