在上一篇简略介绍了Framework 和WinRT 的交互 ,更加强大远不止这些,我们可以实现跨语言的调用,而且这种调用是非常简单的
比如我们用C#写了一些类库 然后可以用JS 来调用我们写的方法。
public sealed class WinRT { public int Test(int a, int b) { return a + b; } }
然后在输出类型上选择 WinMD(WinRT 类型,Framework是 DLL),然后编译
我们在随便建立一个JS orC++ 项目 引用这个WinRTTest.winmd
这里以 JS 为例 VS 只能感应就可以提示我们 ,很强大
当然这些也是有限制的
- API 签名只使用 Windows 运行时的类型
- 结构体只能拥有公有的数据字段
- 只允许对 XAML 控件使用继承,其它类型都必须使用 sealed 关键字。
- 只支持内建的泛型
详见:
Using the Windows Runtime from C# and Visual Basic
这里特别推广下,讲的比我的好多了(特别感谢boolan的辛苦翻译)
知其然,也要知其所以然,虽然目前没更加详细的文档,但是通过反编译我们不难发现
我们在选择生成WinMD 类型时,编译器不仅生成了我们所写的类,同时还生成了一个对应的Interface
这里个人猜测 应该是通过这个接口,编译器才能智能的提示