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

本文关键字:映射 什么 C++ 类在 自定义 | 更新日期: 2023-09-27 18:32:18

我需要将数据从 C# 传递到我的 WP8 应用程序中的C++。

我了解到有一个从.NET到Windows运行时组件的映射。例如:

System.String映射到Platform::String^

IReadOnlyList<String>映射到Windows::Foundation::Collections::IVectorView<Platform::String ^>^

但是自定义(即用户定义的)类映射到什么?

例如,我在 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();

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

您需要

在 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对象的向量/列表。