我有一个可供C#WP应用程序使用的WP C ++运行时组件。
在C ++ Runtime Component中,我有
public interface class ICallback
{
public:
virtual void sendMail(Platform::String ^to, Platform::String ^subject, Platform::String ^body);
};
在C#应用程序中,我有CallbackImpl
,它实现了ICallback
:
public class CallbackImpl : Windows8Comp.ICallback
{
public void sendMail(String to, String subject, String body)
{
//...
}
它完美无缺。
但现在我需要传递比String
更复杂的东西:在C#中我有
public class MyDesc
{
public string m_bitmapName { get; set; }
public string m_link { get; set; }
public string m_event { get; set; }
}
我添加了:
public class CallbackImpl : Windows8Comp.IMyCSCallback
{
private List<MyDesc> m_moreGamesDescs;
public List<MyDesc> getMoreGamesDescs()
{
return m_moreGamesDescs;
}
// ...
}
如何从C ++调用它?
public interface class ICallback
{
public:
virtual <what ret val?> getMoreGamesDescs();
};
我试图创建一个&#34;镜像&#34;像这样的C ++结构:
struct MyDescCPP
{
Platform::String ^m_bitmapName;
Platform::String ^m_link;
Platform::String ^m_event;
}
但我不明白C#&#39; List
在C ++中的映射。
答案 0 :(得分:0)
这是你需要的吗?
virtual List<MyDescCPP>^ getMoreGamesDescs();
^
旁边没有MyDescCPP
(短划线),因为与List<T>
类型ref
不同,您定义的MyDescCPP
是struct
,这意味着它是value
类型。
编辑:
哦,您的struct
必须是value class
或value struct
,因为您想要CLR
类型,而不是原生类型:
value class MyDescCPP
{
Platform::String ^m_bitmapName;
Platform::String ^m_link;
Platform::String ^m_event;
}