我需要在我的WP8应用程序中将数据从C#传递到C ++。
我了解到从.NET到Windows运行时组件的映射。例如:
System.String
映射到Platform::String^
。
IReadOnlyList<String>
映射到Windows::Foundation::Collections::IVectorView<Platform::String ^>^
。
但是自定义(即用户定义的)类映射到什么?
E.g。我在C#侧
public class MyDesc
{
public string m_bitmapName { get; set; }
public string m_link { get; set; }
}
public IReadOnlyList<MyDesc> getDescs()
{
return new List<MyDesc>();
}
我在C ++方面称之为什么?换句话说,我怎么替代“???”到下面:
virtual Windows::Foundation::Collections::IVectorView<??? ^>^ getDescs();
答案 0 :(得分:1)
您需要在C#代码引用的C ++ / CX组件中声明MyDesc类。
所以在你的C ++ / CX中你会得到:
namespace WinRTComponent
{
public ref class MyDesc sealed
{
public:
property Platform::String^ BitmapName
{
Platform::String^ get() { return m_bitmapName; }
void set(Platform::String^ bitmapName) { m_bitmapName = bitmapName; }
}
property Platform::String^ Link
{
Platform::String^ get() { return m_link; }
void set(Platform::String^ link) { m_link = link; }
}
private:
Platform::String^ m_bitmapName;
Platform::String^ m_link;
};
}
然后,您将能够在C ++ / CX和C#之间传递MyDesc对象的矢量/列表