저는 C# 및 Office 자동화에 비교적 익숙하며 최근에 누군가의 Outlook받은 편지함에 대한 참조를 얻고받은 시간순으로 전자 메일을 정렬하려고합니다. Inbox가 Microsoft.Office.Interop.Outlook.Items 유형의 로컬 변수에 할당 된 웹의 다른 곳에서 솔루션을 찾은 다음 정렬이 지역 변수에서 수행되고 작동하면 솔루션이 작동하지 않습니다. 그러나 질문은 왜 그런가? 나는 C# 개체가 참조이고 새로운 Outlook.Inbox 참조를 선언 한 다음 사용자의받은 편지함에있는 항목을 할당 할 때 실제 전자 메일에 대한 추가 포인터로 사용되며 실제로는 각 전자 메일을 복사하지 않는다고 생각했습니다. 새로운 컬렉션으로. 따라서 원본 참조에서 Sort를 호출하는 것과 다를 바가 없습니다. 분명히 나는 틀렸어. 그래서 설명 할께. 고맙습니다! 당신이 기존받은 편지함에 새 참조를 만드는 Outlook.Inbox-C# 및 예기치 않은 결과 참조
using Outlook = Microsoft.Office.Interop.Outlook;
...
Outlook.Folder oInbox = (Outlook.Folder)oApp.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);
oInbox.Items.Sort("[Received]", true); //this doesn't produce expected results
Outlook.Items inboxFolder = (Outlook.Items)oInbox.Items;
inboxFolder.Sort("[Received]", true); //this DOES sort the items!
oInbox.Items의 유형은 무엇입니까? 그 타입이 다른 동작을 가지도록 (듯이) Sort 메소드를 오버라이드 (override) 할 수 있습니다. Outlook.Items로 캐스팅하여 기본 클래스에서 동작을 얻고 있습니다. – cadrell0