interop
原创
©著作权归作者所有:来自51CTO博客作者szgamer的原创作品,请联系作者获取转载授权,否则将追究法律责任
1、包装非托管代码于托管
可选方式有平台调用,c++/cli 包装,com interop
平台调用,支持 API 级别包装,要想包装c++类型等,需平展为 API,后于.net 端组装为类型,细节依然比较多,如生存期管理,对象身份一致性(c++具体类型实例在 .net 端亦然为对应包装类型实例,需借助 rtti 能力)
c++/cli,相对工作量小些,亦然有上述实现细节问题
com interop ,。net 自动生成 rcw 帮助实现上述细节,缺点?
你想学习 COM 嘛?你想和讨厌的 COM 打交道嘛?OK,你来对地方了
2、包装托管于非托管
c++/cli 暴露出本地类型接口,内部实现转接到 .NET 对应实现,需自己处理类型转换问题,且不是所有的 .NET 类型都能够找到对于的本地类型对应,需做些改造工作
com interop,即为用 c# 编写 COM 组建,需学习大量互操作相关知识,尤其是类型转换问题,比如一个.NET stirng 对应多个非托管类型,选择哪一个?.NET 数组翻译为本机数组?安全数组?抉择权在你
后记:
最近做了一些 C# 编写 COM 组建相关工作,心得如下:
1、泛型无法导出能实例化版本,只能导出可访问版本
2、事件需和接口中定义完全匹配,泛型 eventhandle<t> 无用武之地了 。。。
上一篇:com 基本概念复习
下一篇:boost备忘录
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Interop type 'Microsoft.Office.Interop.Word.ApplicationClass' cannot be embedded. Use the applicable
错误信息: Interop type 'Microsoft.Office.Interop.Word.ApplicationClass' cannot be embedde
Interop type Microsoft.Office embedded ApplicationClass applicable interface -
Registration-Free COM Interopide microsoft .net xml sed