托管WinRT组件+虚拟方法

本文关键字:虚拟 方法 组件 WinRT 托管 | 更新日期: 2023-09-27 18:25:18

我正在C#中创建可组合的WinRT组件,并尝试添加虚拟方法定义:

namespace FooComponent {
  [EnableComposition]
  public class Foo {
    public virtual void Bar() { }
  }
}

我从winmd导出实用程序中得到一个错误,即"托管WinRT组件中不允许使用虚拟方法声明"。但是在C++中创建这样的组件确实很容易。

恢复在托管代码中定义的可组合WinRT组件中定义自定义虚拟方法的能力的原因是什么?能够在没有自定义虚拟方法的情况下实现继承的目的是什么?

托管WinRT组件+虚拟方法

如果您试图构建一个将被JavaScript使用的Windows运行时组件,那么您将无法执行您想要执行的操作。执行此操作时需要遵循一组规则。也就是说,您的类必须标记为"密封",这将阻止您使用任何虚拟方法。请参阅MSDN上关于为JS创建Windows运行时组件的文档-http://msdn.microsoft.com/en-us/library/windows/apps/br230301(v=vs.110).aspx

如果您没有尝试为JS创建运行时组件,那么您可以将库的输出类型更改为"类库",以便执行您正在尝试的操作。