【发布时间】:2012-11-29 04:52:07
【问题描述】:
假设我已经用纯原生 C++ 编写了我的 BL(表达的目的是在其他平台上重用它),现在我想将某些类公开为 WinRT 组件(以便我可以用 C# 编写 UI)。
是否有任何代码生成器会自动为给定的本地 C++ 类生成等效的“引用类”(WinRT 组件),并生成将一组属性从一个复制到另一个的映射代码(有点像 AutoMapper对 .NET POCO 有用吗?)
【问题讨论】:
-
不可用。也许有一天,但我不会为此屏住呼吸。由于要处理的类型集有限,语言投影从 WinRT 到 C++/CX 运行良好,但反之则不行。并且可靠地解析 C++ 所需的工具(如 Edison 的工具)需要花费大量精力。
-
"自动生成等效的 'ref classes'" -
ref classes 总是被引用计数。鉴于该属性,每个 C++ 类都不能有一个等效的ref class。 C++ 中的多重继承也很难映射到 WinRT 类型系统。除非您的 C++ 实现通过定义明确的 ABI(如 COM)公开其服务,否则您不能指望任何工具介入并提供帮助。 COM TypeLibs、.winmd 文件和 .NET 的元数据使用定义明确的 ABI。这就是为什么您可以为每一个找到自动转换工具的原因。
标签: c++ windows-runtime winrt-xaml c++-cx