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
有以下声明:
- 一个接口,
Folder
- 另一个接口,
FolderItem
- 无法从
继承的class、ShellFolderItemClass
我的目标是在某些目录上调用右键单击动词。但是,据我所见,接口需要一个实现,这意味着我不能简单地"call the method."未定义方法。
我该怎么做?
COM 接口的工作方式与普通 C# 类型不同。将 COM 实例转换为接口会调用 QueryInterface
。这就是 CLR 魔法。
这就是为什么您可以使接口转换在静态不应该工作的 COM 类型上工作。此外,通常不会失败的转换可能会失败。
我没有使用 Shell COM API 的经验,但理论上 (MyInterface)(new MyExampleClass())
如果涉及的所有类型都是 COM 类型,则可以工作。
好的,我是 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
有以下声明:
- 一个接口,
Folder
- 另一个接口,
FolderItem
- 无法从 继承的class、
ShellFolderItemClass
我的目标是在某些目录上调用右键单击动词。但是,据我所见,接口需要一个实现,这意味着我不能简单地"call the method."未定义方法。
我该怎么做?
COM 接口的工作方式与普通 C# 类型不同。将 COM 实例转换为接口会调用 QueryInterface
。这就是 CLR 魔法。
这就是为什么您可以使接口转换在静态不应该工作的 COM 类型上工作。此外,通常不会失败的转换可能会失败。
我没有使用 Shell COM API 的经验,但理论上 (MyInterface)(new MyExampleClass())
如果涉及的所有类型都是 COM 类型,则可以工作。