托管WinRT组件+虚拟方法

时间:2012-02-20 22:46:00

标签: c# com components windows-runtime

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

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

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

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

1 个答案:

答案 0 :(得分:0)

如果您尝试构建将由JavaScript使用的Windows运行时组件,那么您将无法执行您尝试的操作。这样做有一套规则要遵循。也就是说,你的班级必须被标记为“密封”,否则会阻止你使用任何虚拟方法。请参阅MSDN上有关为JS创建Windows运行时组件的文档 - http://msdn.microsoft.com/en-us/library/windows/apps/br230301(v=vs.110).aspx

如果您没有尝试为JS创建运行时组件,则可以将库的输出类型更改为“类库”,以允许您执行您尝试的操作。