C# 从没有定义代码的接口调用方法

C# call a method from an interface with no defining code

好的,我是 C# 接口的新手。据我了解,接口包含 class 可以实现和使用的方法原型。例如:

interface MyInterface {
    public void printhelloworld();
}

class MyExampleClass : MyInterface {
    public void exampleMethod() {
        printhelloworld();
    }

    public void printhelloworld() {
        System.Console.WriteLine("Hello, world!");
    }
}

但是,我遇到问题的界面在 Shell32 中。更具体地说,我正在尝试调用 ParseName method of Folder and, from there, the InvokeVerb method of FolderItem.

根据我在 Class 视图中看到的内容,Shell32 有以下声明:

我的目标是在某些目录上调用右键单击动词。但是,据我所见,接口需要一个实现,这意味着我不能简单地"call the method."未定义方法。

我该怎么做?

COM 接口的工作方式与普通 C# 类型不同。将 COM 实例转换为接口会调用 QueryInterface。这就是 CLR 魔法。

这就是为什么您可以使接口转换在静态不应该工作的 COM 类型上工作。此外,通常不会失败的转换可能会失败。

我没有使用 Shell COM API 的经验,但理论上 (MyInterface)(new MyExampleClass()) 如果涉及的所有类型都是 COM 类型,则可以工作。