基于C#的接口基础教程之六(2)
执行 COM 映射需要理解的主要属性包括:
1、ComImport:它将类标记为在外部实现的 COM 类。
2、Guid:它用于为类或接口指定通用唯一标识符 (UUID)。
3、InterfaceType,它指定接口是从 IUnknown 还是从 IDispatch 派生。
4、PreserveSig,它指定是否应将本机返回值从 HRESULT 转换为 .NET 框架异常。
声明 COM coclass
COM coclass 在 C# 中表示为类。这些类必须具有与其关联的 ComImport 属性。下列限制适用于这些类:
1、类不能从任何其他类继承。
2、类不能实现任何接口。
4、类还必须具有为其设置全局唯一标识符 (GUID) 的 Guid 属性。
以下示例在 C# 中声明一个 coclass:
// 声明一个COM类 FilgraphManager
[ComImport, Guid("E436EBB3-524F-11CE-9F53-0020AF0BA770")]
class FilgraphManager
{ }
C# 编译器将添加一个无参数构造函数,可以调用此构造函数来创建 COM coclass 的实例。
创建 COM 对象
COM coclass 在 C# 中表示为具有无参数构造函数的类。使用 new 运算符创建该类的实例等效于在 C# 中调用 CoCreateInstance。使用以上定义的类,就可以很容易地实例化此类:
class MainClass
{
public static void Main()
{
FilgraphManager filg = new FilgraphManager();
}
}
声明 COM 接口
COM 接口在 C# 中表示为具有 ComImport 和 Guid 属性的接口。它不能在其基接口列表中包含任何接口,而且必须按照方法在 COM 接口中出现的顺序声明接口成员函数。
在 C# 中声明的 COM 接口必须包含其基接口的所有成员的声明,IUnknown 和 IDispatch 的成员除外(.NET 框架将自动添加这些成员)。从 IDispatch 派生的 COM 接口必须用 InterfaceType 属性予以标记。
从 C# 代码调用 COM 接口方法时,公共语言运行库必须封送与 COM 对象之间传递的参数和返回值。对于每个 .NET 框架类型均有一个默认类型,公共语言运行库将使用此默认类型在 COM 调用间进行封送处理时封送。例如,C# 字符串值的默认封送处理是封送到本机类型 LPTSTR(指向 TCHAR 字符缓冲区的指针)
相关新闻>>
- 发表评论
-
- 最新评论 更多>>