自定义C#类在C ++中映射到什么?

时间:2014-11-27 12:53:38

标签: c# windows-phone-8 c++-cx

我需要在我的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();

1 个答案:

答案 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对象的矢量/列表