这段代码在做什么?

时间:2011-04-20 21:30:12

标签: c# .net

有人可以向我解释以下代码行吗?

dynamic shellApplication = Activator.CreateInstance(Type.GetTypeFromProgID("Shell.Application"));

string path = System.IO.Path.GetDirectoryName(filePath);
string fileName = System.IO.Path.GetFileName(filePath);

dynamic directory = shellApplication.NameSpace(path);
dynamic link = directory.ParseName(fileName);

dynamic verbs = link.Verbs();

我搜索了msdn库,但无法理解它的作用。

这不是完整的代码,但我承诺其余的,只是这部分我正在努力。

3 个答案:

答案 0 :(得分:4)

这会创建"Shell.Application" COM对象,然后使用dynamic来调用它上面的方法。

它获取可以在文件上调用的所有动词。

这基本上是scripting。有关示例,请参阅herehere

答案 1 :(得分:4)

看起来它正在检索与特定程序关联的shell操作。例如,打开,打印,编辑等

打开注册表并导航到HKEY_LOCAL_MACHINE \ SOFTWARE \ Classes \ textfile

将其展开并查看Shell密钥。代码应该返回类似的动词。

答案 2 :(得分:1)

要扩展Aliostad的答案,C#中的dynamic关键字允许您调用未知类型的成员和方法。这意味着使用dynamic变量,您将无法获得智能感知,因为编译器不知道变量实际具有哪些成员或方法。这一切都在运行时计算出来。

这是good explanation