如何将方法中的自定义 WinRT 类型从 c# 传递到 c++ Windows 运行时组件?
How to pass custom WinRT types in methods from c# to c++ Windows Runtime Components?
我正在尝试通过一种方法将在 C# 中创建的简单 C++ class 传递到我的 C++ WinRT 组件,但我不知道如何做到这一点,甚至不知道如何做到这一点。
我用 C++ 创建了这个自定义 class
(来自 https://msdn.microsoft.com/en-us/library/hh441569.aspx)
namespace CppComponent
{
// Custom struct
public value struct PlayerData
{
Platform::String^ Name;
int Number;
double ScoringAverage;
};
public ref class Player sealed
{
private:
PlayerData m_player;
public:
property PlayerData PlayerStats
{
PlayerData get(){ return m_player; }
void set(PlayerData data) {m_player = data;}
}
};
}
我可以在 C# 中创建它并使用它,这样就可以了。
我还可以使用 return int 或 Platform::String.
的其他方法
但是我怎样才能在类似于 C++ 的方法中使用它呢? (并作为 return 类型)
in .cpp file:
Platform::String^ CppComponent::DoSomething(Platform::String^ input, Player myCustomClass)
{
in .h file:
Platform::String^ DoSomething(Platform::String^ input, Player myCustomClass);
知道如何让 "Player myCustomClass" 正确吗?
原来我已经很接近了。
我将 de struct 和 class 放在我的 .h 文件中,并使用 Player^ 而不是 Player,例如:
Platform::String^ CppComponent::DoSomething(Platform::String^ input, Player^ myCustomClass)
我正在尝试通过一种方法将在 C# 中创建的简单 C++ class 传递到我的 C++ WinRT 组件,但我不知道如何做到这一点,甚至不知道如何做到这一点。
我用 C++ 创建了这个自定义 class (来自 https://msdn.microsoft.com/en-us/library/hh441569.aspx)
namespace CppComponent
{
// Custom struct
public value struct PlayerData
{
Platform::String^ Name;
int Number;
double ScoringAverage;
};
public ref class Player sealed
{
private:
PlayerData m_player;
public:
property PlayerData PlayerStats
{
PlayerData get(){ return m_player; }
void set(PlayerData data) {m_player = data;}
}
};
}
我可以在 C# 中创建它并使用它,这样就可以了。 我还可以使用 return int 或 Platform::String.
的其他方法但是我怎样才能在类似于 C++ 的方法中使用它呢? (并作为 return 类型)
in .cpp file:
Platform::String^ CppComponent::DoSomething(Platform::String^ input, Player myCustomClass)
{
in .h file:
Platform::String^ DoSomething(Platform::String^ input, Player myCustomClass);
知道如何让 "Player myCustomClass" 正确吗?
原来我已经很接近了。
我将 de struct 和 class 放在我的 .h 文件中,并使用 Player^ 而不是 Player,例如:
Platform::String^ CppComponent::DoSomething(Platform::String^ input, Player^ myCustomClass)