通过IEnumerable枚举Com-Object集合

时间:2015-08-14 13:23:42

标签: c# collections com outlook

我想通过一个方法迭代一个Outlook.Selection(它是一个实现IEnumerable的集合)或一个Outlook.Items集合(它也间接地实现了IEnumerable)。所以方法参数可以是其中之一。

我无法弄清楚,如何正确实现该方法的参数。 到目前为止我到目前为止:

Outlook.Selection items1 = activeExplorer.Selection;
Outlook.Items items2 = currentFolder.Items;

// How can i input these as parameter into the method below?

// The Method to iterate looks like this so far:
        private void MethodX<T>(IEnumerable<T> items)
        {
            foreach (var item in items)
            {
                //...
            }
        }

由于使用了COM-Objects,我不知道这是否可行... 也许有另一种方式?!

1 个答案:

答案 0 :(得分:-1)

在回复上述评论时 - 要使用“for”循环,请尝试以下操作:

Outlook.Items items2 = currentFolder.Items;
for (int i = 1; i <= items2.Count; i++)
{
  object item = items2[i];
  Outlook.MailItem mailItem = (MailItem)item;
  if (mailItem != null) //you can have objects other than MailItem
  {
    //use mailItem here
    Marshal.ReleaseComObject(mailItem );
  }
  Marshal.ReleaseComObject(item);  
}