メトロスタイルアプリケーション(win8)で使用するC#WinRTコンポーネントを作成しようとしていますが、投影型に問題があります。リスト<T>またはC#WinRTコンポーネントの<T,T2>辞書
保護レベルのため、データタイプにアクセスできないようですか?
マイサンプルWinMDライブラリは、1つのクラスを持っている:
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
は私が間違って何をしているのですか?
編集:
Ah ha!
私はWinRTタイプ名を直接使用するのではなく、翻訳された.NET名を使用するべきです。
正しいコードは次のようになります
namespace ClassLibrary1
{
public sealed class Class1
{
public IList<string> foo()
{
return new List<string>();
}
}
}
これは、そのコアでネイティブAPIを使用するWinRTコンポーネントです。したがって、リスト - > IVector を投影する必要があります。詳細はhttp://msdn.microsoft.com/en-us/library/windows/apps/br230301(v=vs.110).aspxを参照してください。マッピングテーブルは、ページのほぼ中間にあります。 –