Управляемые компоненты WinRT + виртуальные методы - PullRequest
2 голосов
/ 21 февраля 2012

Я создаю компонуемый компонент WinRT в C # и пытаюсь добавить определение виртуального метода:

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

Я получил сообщение об ошибке из утилиты экспорта winmd о том, что "объявление виртуального метода не разрешенов управляемых компонентах WinRT ".Но действительно легко создать такой компонент в C ++.

В чем причина ограничения возможности определения пользовательских виртуальных методов в компонуемых компонентах WinRT, определенных в управляемом коде?Какова цель включения наследования реализации без пользовательских виртуальных методов?

1 Ответ

0 голосов
/ 21 февраля 2012

Если вы пытаетесь создать компонент среды выполнения Windows, который будет использоваться JavaScript, то вы не сможете делать то, что пытаетесь.При этом существует ряд правил, которым нужно следовать.А именно, что ваш класс должен быть помечен как «запечатанный», что в любом случае не позволит вам использовать какие-либо виртуальные методы.Пожалуйста, ознакомьтесь с документацией по MSDN, в которой говорится о создании компонентов среды выполнения Windows для JS - http://msdn.microsoft.com/en-us/library/windows/apps/br230301(v=vs.110).aspx

Если вы не пытаетесь создать компонент среды выполнения для JS, вы можете изменить тип вывода вашей библиотеки на "Библиотека классов ", чтобы позволить вам делать то, что вы пытаетесь.

...