Estoy tratando de crear un componente C# WinRT para su uso en aplicaciones de estilo metro (win8) y tengo problemas con los tipos proyectados.Cómo usar List <T> o Dictionary <T,T2> en C# WinRT componente
Parece que los tipos de datos IVector <> y IMap <> son inaccesibles debido a su nivel de protección?
mi ejemplo WinMD Biblioteca tiene una clase:
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>();
}
}
}
consigo los siguientes errores de compilación:
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
¿Qué estoy haciendo mal?
EDITAR:
¡Ah, ja!
Resulta que no debería estar usando los nombres de tipo WinRT directamente, sino que usaré sus nombres traducidos de .NET en su lugar.
El código correcto es el siguiente:
namespace ClassLibrary1
{
public sealed class Class1
{
public IList<string> foo()
{
return new List<string>();
}
}
}
Este es un componente WinRT que utiliza API nativas en su núcleo. Por lo tanto, necesita proyectar la lista -> IVector . Consulte http://msdn.microsoft.com/en-us/library/windows/apps/br230301(v=vs.110).aspx para obtener más detalles. La tabla de mapeo está a la mitad de la página. –