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> 无用武之地了 。。。