首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++命令行界面中的C#动态关键字相当于什么?

C++命令行界面中的C#动态关键字相当于什么?
EN

Stack Overflow用户
提问于 2013-03-12 19:23:00
回答 2查看 2.2K关注 0票数 6

有两个项目,一个是C++命令行界面,另一个是C#。

C#项目引用了C++ CLI项目。

在C#中,我想这样做:

代码语言:javascript
复制
//method signature is somemethod(dynamic data);
somemethod("haaaii");

现在,C++ CLI项目中的方法必须处理此问题。

如何在C++命令行界面中声明此方法?

另外,如何在C++命令行界面中检测数据类型?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-13 14:24:40

要获取C#视为dynamic的方法签名,请执行以下操作

代码语言:javascript
复制
void TestMethod( [System::Runtime::CompilerServices::DynamicAttribute] System::Object^ arg )
{
}

但是,如果您只想接受所有类型,则可以简单地使用System::Object^。该属性具有误导性,因为它暗示了您将很难提供的语义。

要发现实际的数据类型,请使用arg->GetType()。然后,您可以在运行时使用反射和/或DLR的所有功能来发现和调用成员。

稍微有用一点的是在返回类型上使用该属性,因为在使用var关键字时,C#会推断出dynamic语义。

代码语言:javascript
复制
[returnvalue: System::Runtime::CompilerServices::DynamicAttribute]
System::Object^ TestReturn( void )
{
    return 1;
}
票数 6
EN

Stack Overflow用户

发布于 2013-03-12 19:24:57

您可能需要对System::Dynamic::DynamicObject类型进行动态处理

void somemethod(ref System::Dynamic::DynamicObject data) { }

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15359802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档