只是好奇是否有人有足够的时间使用WinRT尚未了解WinRT和.NET 4.5中是否有区域消除了.NET程序员在VSTO和COM Interop Office编程中遇到的与RCW相关的一些旧项目COM引用计数和.NET GC的差异超出了不使用终结器(确保您获得对所有.NET RCW的引用等)。
如果他们抽象出那些考虑因素或更好,但架构存在重大差异并且这些问题甚至不适用,那么这并不是什么大不了的事。
提前致谢
提出这个问题的一个更好的方法是,在托管(垃圾箱)引用计数内存架构中引用COM(WinRT)对象的托管/垃圾收集内存模型中,它是否仍然与.NET对象的架构基本相同?
除非元数据绑定或沙盒环境中存在某些“魔力”,否则我们只需要应用与RCW相同的方法。
答案 0 :(得分:1)
我在C#/ XAML的开发者预览版中构建了两个完整的应用程序。 WinRT对象就像普通的C#对象一样。无需终结器或其他传统的.NET / COM互操作程序。对.NET的预测使WinRT API非常无缝。
有些地方COM泄漏。
我预计这些问题将在未来的Windows 8版本中得到解决。
现在还有一些冗余,在WinRT和.NET中都定义了类似的类型(IObservableVector和INotifyCollectionChanged)
答案 1 :(得分:0)
根据.NET框架的官方blog post:
.NET API不是通过WinRT公开的,而是继续按照CLR公开的方式继续工作。
进一步说:
.NET开发人员对互操作技术并不陌生。您可以使用COM Interop和P / invoke从.NET代码调用本机API。
答案 2 :(得分:-1)
COM互操作在WinRT中并不适用,因为WinRT完全绕过Win32架构(即它们并排存在)。由于COM位于Win32之上,因此在WinRT环境中完全独立。
编辑:对不起 - 我错了。完全误解了WinRT!请参阅下面的svick评论。