2012-02-20 2 views
2

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

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

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

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

ответ

0

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

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

+0

Пожалуйста, сначала прочитайте вопрос! Я не создаю компонент, который будет использоваться для JS. Я создаю * составной * компонент WinRT. Компонентные компоненты WinRT скрыты от веб-хоста по определению (например, элементы управления XAML). Изменение типа вывода на «Библиотека классов»? Ты серьезно? – ControlFlow

+0

Хорошо, неверно истолковал ваш вопрос. Виноват. Можете ли вы рассказать мне, что вы строите/выпускаете (предварительный просмотр, предварительная бета-версия)? Эта функциональность изменилась, и поэтому эта информация актуальна. Я могу копать дальше на моем конце, чтобы посмотреть, что происходит. –

+0

Предварительный просмотр разработчика. Было бы очень хорошо, если бы это было просто ограничение Dev Preview. – ControlFlow

Смежные вопросы