Moh*_*kar 6 .net c# c++-cli visual-c++
有两个项目,一个是C++ CLI,另一个是C#.
C#项目引用了C++ CLI项目.
在C#中我想这样做:
//method signature is somemethod(dynamic data);
somemethod("haaaii");
Run Code Online (Sandbox Code Playgroud)
现在C++ CLI项目中的方法必须处理这个问题.
如何在C++ CLI中声明此方法?
另外如何在C++ CLI中检测数据类型?
要获得C#看到的方法签名dynamic:
void TestMethod( [System::Runtime::CompilerServices::DynamicAttribute] System::Object^ arg )
{
}
Run Code Online (Sandbox Code Playgroud)
但如果你只是想接受所有类型,你可以简单地使用System::Object^.该属性具有误导性,因为它暗示了您将很难提供的语义.
要发现实际数据类型,请使用arg->GetType().然后,您可以使用反射和/或DLR的所有功能在运行时发现和调用成员.
稍微有用的是在返回类型上使用该属性,因为C#将dynamic在使用var关键字时推断语义.
[returnvalue: System::Runtime::CompilerServices::DynamicAttribute]
System::Object^ TestReturn( void )
{
return 1;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1825 次 |
| 最近记录: |