托管 WinRT 组件 + 虚拟方法
Posted
技术标签:
【中文标题】托管 WinRT 组件 + 虚拟方法【英文标题】:Managed WinRT components + virtual methods 【发布时间】:2012-03-11 07:01:36 【问题描述】:我正在 C# 中创建可组合的 WinRT 组件并尝试添加虚拟方法定义:
namespace FooComponent
[EnableComposition]
public class Foo
public virtual void Bar()
我从 winmd 导出实用程序收到一个错误,即 “托管 WinRT 组件中不允许虚拟方法声明”。但是用C++创建这样的组件真的很容易。
限制在托管代码中定义的可组合 WinRT 组件中定义自定义虚拟方法的原因是什么?在没有自定义虚拟方法的情况下启用实现继承的目的是什么?
【问题讨论】:
【参考方案1】:如果您尝试构建将由 javascript 使用的 Windows 运行时组件,那么您将无法执行您尝试执行的操作。这样做时需要遵循一系列规则。也就是说,您的类必须标记为“密封”,这将阻止您使用任何虚拟方法。请参阅 MSDN 上有关为 JS 创建 Windows 运行时组件的文档 - http://msdn.microsoft.com/en-us/library/windows/apps/br230301(v=vs.110).aspx
如果您不尝试为 JS 创建运行时组件,则可以将库的输出类型更改为“类库”以允许您执行您正在尝试的操作。
【讨论】:
请先好好阅读问题!我不是在构建组件,它可以从 JS 中消耗。我正在构建 composable WinRT 组件。根据定义(如 XAML 控件),可组合的 WinRT 组件对 Web 主机隐藏。将输出类型更改为“类库”?你是认真的吗? 好的,误解了你的问题。我的错。您能告诉我您正在使用什么构建/发布版本(开发者预览版、预测试版、测试版)吗?此功能已更改,因此此信息是相关的。我可以进一步挖掘,看看发生了什么。 开发者预览版。如果只是 Dev Preview 限制,那就太好了。以上是关于托管 WinRT 组件 + 虚拟方法的主要内容,如果未能解决你的问题,请参考以下文章
一些 WinRT 功能在 Xbox 上失败,但在 Windows 10 上没有