我正在尝试使用Interop.Outlook在Outlook中指定文件夹。
因此,为了做到这一点,我使用以下方法:
Outlook.Folder targetFolder = ParentFolder.Folders["Level-1 Folder"] as Outlook.Folder;
这通常可以,但是有时我必须要比子文件夹低一些。我可能需要进入子文件夹,例如:
Outlook.Folder targetFolder = ParentFolder.Folders["Level-1 Folder"].Folders["Level-2 Folder"] as Outlook.Folder;
我想知道是否可以通过变量使用Folder方法。请看一下我的想法:
string myMethod = "Folders["Level-1 Folder"].Folders["Level-2 Folder"]";
Outlook.Folder targetFolder = ParentFolder. + myMethod;
感谢您的协助。
关于,W
我想知道是否可以通过变量使用Folder方法。那就是您在ParentFolder.Folders["Level-1 Folder"]
中所做的。 ParentFolder
是变量。
只需写
Outlook.Folder subfolder = targetFolder.Folders["Level-2 Folder"] as Outlook.Folder;
我不确定为什么您认为方法名称必须作为字符串传递。顺便说一句。 Folders
是索引器。
是否链接索引都没有关系
var x = a.f["a"].f["b"].f["c"];
与]相同>
var x = a.f["a"];
x = x.f["b"];
x = x.f["c"];
逐级更改的是文件夹名称(索引),该名称可以在变量中。你可以写
string index;
var targetFolder = ParentFolder as Outlook.Folder;
index = "Level-1 Folder";
targetFolder = targetFolder.Folders[index] as Outlook.Folder;
index = "Level-2 Folder";
targetFolder = targetFolder.Folders[index] as Outlook.Folder;
index = "Level-3 Folder";
targetFolder = targetFolder.Folders[index] as Outlook.Folder;
因此您在每个级别上都有完全相同的语句,只是文件夹名称会更改。或:
var indexes = new string[] { "Level-1 Folder", "Level-2 Folder", "Level-3 Folder" };
var targetFolder = ParentFolder as Outlook.Folder;
foreach (string index in indexes) {
targetFolder = targetFolder.Folders[index] as Outlook.Folder;
}