Tôi đang cố gắng tạo thành phần C# WinRT để sử dụng trong các ứng dụng kiểu metro (win8) và đang gặp sự cố với các loại dự kiến.Cách sử dụng Danh sách <T> hoặc Từ điển <T,T2> trong C# Thành phần WinRT
Dường như IVector <> và IMap <> loại dữ liệu không thể truy cập được do mức độ bảo vệ của chúng?
My mẫu WinMD Thư viện có một lớp:
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>();
}
}
}
tôi nhận được các lỗi biên dịch sau:
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
Tôi đang làm gì sai?
EDIT:
Ah ha!
Hóa ra tôi không nên sử dụng tên loại WinRT trực tiếp, nhưng thay vì sử dụng tên .NET đã dịch của chúng.
Mã đúng trông như thế này:
namespace ClassLibrary1
{
public sealed class Class1
{
public IList<string> foo()
{
return new List<string>();
}
}
}
Đây là một thành phần WinRT sử dụng các API gốc ở lõi của nó. Vì vậy, nó cần phải dự án Danh sách -> IVector . Xem http://msdn.microsoft.com/en-us/library/windows/apps/br230301(v=vs.110).aspx để biết thêm chi tiết. Bảng ánh xạ là khoảng một nửa xuống trang. –