调用实例方法,该方法保存在字符串变量中

问题描述 投票:0回答:1

我正在尝试使用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

c# methods instance
1个回答
0
投票

我想知道是否可以通过变量使用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;
}
© www.soinside.com 2019 - 2024. All rights reserved.