Я пишу Native / CLI DLL в C ++. В конце концов я вызову DLL из кода C # (с которым я гораздо лучше знаком), но я пытаюсь обернуть свои классы Native C ++ оболочкой CLI.
Итак, мой вопрос, каков наилучший способ для меня преобразовать std :: vector в класс List?
Классы в основном простые, самые сложные выглядят так:
class SecurityPrincipal
{
public:
wstring distinguishedName;
SECURITYPRINCIPAL_NODE_TYPE NodeType;
vector<LDAPAttribute> Attributes;
vector<SecurityPrincipal> Nodes;
}
Если честно, я даже не смог получить vector<wstring>
в List<String>
,
Любая помощь приветствуется!
Я не знаю ни одного стандартного алгоритма / функции, включенного в 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;
}
Других решений пока нет …