我有一个包含大量类的 C++/CLI 项目——这些类有自己的元数据系统。所以我想返回一个动态对象,以便在 C# 中简化一些用例。但我不知道如何在 C++ 中执行此操作。
在 C# 中,我可以编写以下内容:
dynamic TestThisOut()
{
return null;
}
void mork()
{
var d = TestThisOut();
d.Fork();
}
我想用 C++/CLI 编写 TestThisOut()
,这样我就可以像在上面的“mork”函数中一样使用它(即不必键入动态关键字)。这可能吗?
最佳答案
您可以在c++/cli 中创建动态对象,只是不能像在C# 项目中那样使用它。但是,您可以从 C# 中使用它。以下是您的操作方法:
在 C++/CLI 中创建返回 Object^ 的属性或方法。使用 System::Runtime::CompilerServices::DynamicAttribute 标记此属性或方法。一切顺利。
这是我创建的一个快速示例:
namespace ClassLibrary1
{
using namespace System;
using namespace System::Dynamic;
public ref class Class1 : public DynamicObject
{
public:
[System::Runtime::CompilerServices::Dynamic]
static property Object^ Global
{
public:
Object^ get()
{
return gcnew Class1();
}
}
public:
String^ Test()
{
return "Test";
}
};
}
还有我的 C# 消费者:
Console.WriteLine( ClassLibrary1.Class1.Global.Test() );
关于c# - 将 C++/CLI 中的动态对象返回到 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10577439/