Я пытаюсь создать компонент C# WinRT для использования в приложениях стиля метро (win8), и у меня возникают проблемы с проецируемыми типами.Как использовать Список <T> или Словарь <T,T2> в компоненте C# WinRT
Похоже, что типы данных недоступны из-за их уровня защиты?
Моя Sample WinMD библиотека имеет один класс:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Windows.Foundation.Collections;
namespace ClassLibrary1
{
public sealed class Class1
{
public IVector<string> foo()
{
return new List<string>();
}
}
}
Я получаю следующие ошибки компилятора:
Inconsistent accessibility: return type 'Windows.Foundation.Collections.IVector<string>' is less accessible than method 'ClassLibrary1.Class1.foo()'
'Windows.Foundation.Collections.IVector<string>' is inaccessible due to its protection level
Что я делаю неправильно?
EDIT:
Ah ha!
Оказывается, я не должен использовать имена типов WinRT напрямую, но вместо них вместо них использовать их переведенные имена .NET.
Правильный код выглядит следующим образом:
namespace ClassLibrary1
{
public sealed class Class1
{
public IList<string> foo()
{
return new List<string>();
}
}
}
Это компонент WinRT, который использует собственные API в своем ядре. Поэтому необходимо проецировать Список -> IVector . Подробнее см. Http://msdn.microsoft.com/en-us/library/windows/apps/br230301(v=vs.110).aspx. Таблица сопоставления находится примерно на половине страницы. –