1

我正在使用一个 DLL,该 DLL 提供了一个具有名为 Tag 的命名索引属性的类

以下 C# 代码运行良好

// create an instance of the class 'ticks'
...

// set tag value to 46 for contract
 ticks.set_Tag("contract",46 );

// get tag value for contract
 int idx = (int)ticks.get_Tag("contract");

我想从 C++/CLI 中使用它

方法 set_Tag 和 get_Tag 不可见

此代码可以正常工作(或至少可以编译)来设置值

ticks->Tag["contract"] = 46;

但是访问该值无法编译

int idx = ticks->Tag["contract"];

error C2440: 'initializing' : cannot convert from 'System::Object ^' to 'int'

如果我将其强制(强制转换)为 int,则它包含垃圾

4

1 回答 1

1

这可能是因为它idx是盒装的Int32,而不是int. 您可以使用

int idx = safe_cast<int>(ticks->Tag["contract"]);

拆箱号码。

于 2013-08-22T13:34:46.433 回答