调用保存在字符串变量中的实例方法
Invoke instance method which is held in a string variable
我正在尝试使用 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;
}
我正在尝试使用 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;
}