2

我正在用 C++ 编写本机/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>进入 a List<String>

任何帮助将非常感激!

4

1 回答 1

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;
}
于 2013-01-06T03:21:23.167 回答