我正在用C ++编写Native / CLI DLL。我最终将从C#代码中调用DLL(我更熟悉它),但我正在尝试使用CLI包装器封装我的Native C ++类。
所以我的问题是,将std :: vector转换为List类的最佳方法是什么?
这些类大多是简单的,最复杂的看起来像这样:
class SecurityPrincipal
{
public:
wstring distinguishedName;
SECURITYPRINCIPAL_NODE_TYPE NodeType;
vector<LDAPAttribute> Attributes;
vector<SecurityPrincipal> Nodes;
}
说实话,我甚至无法将vector<wstring>
变成List<String>
。
非常感谢任何帮助!
答案 0 :(得分:4)
我不知道C ++中包含的任何标准算法/函数允许该级别的转换。但是有什么理由for
循环不起作用?以下是大脑编译。
typedef System::Collections::Generic::List<class1_cli> MyList;
typedef std::vector<class1_native> MyVector;
MyList^ NativeToManaged(MyVector& v) {
MyList^ result = gcnew MyList();
if (result != nullptr) {
for (MyVector::iterator i = v.begin(); i != v.end(); ++i) {
class1_native& nativeValue = *i;
result.Add(gcnew class1_cli(nativeValue));
}
}
return result;
}