Native/CLI C++: как преобразовать вектор<class1_native> в список<class1_cli>

Я пишу 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>,

Любая помощь приветствуется!

1 ответ

Решение

Я не знаю ни одного стандартного алгоритма / функции, включенного в 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;
}
Другие вопросы по тегам