我通过.NET的System.CodeDom生成C ++ / CLI代码。
最近,我不得不创建一个带有指针的C ++ / CLI方法,比如int foo(char *data)
,结果很棘手。
System.CodeDom.CodeParameterDeclarationExpression(type, name)
仅创建带句柄(^)的参数,而不是poiters(*),我找不到办法。
怎么可能呢?任何线索都表示赞赏。
答案 0 :(得分:1)
最后,我决定以编程方式从类型中删除星号,为没有星号的类型创建CodeTypeReference,并使用名称创建变量,从星号开始。
另一种方法是为类型的UserData字典创建“ForceTypePassThrough”键,如下所示:
CodeTypeReference tmpTypeRef = new CodeTypeReference("char *");
tmpTypeRef.UserData["ForceTypePassThrough"] = true;
CodeVariableDeclarationStatement tmpVarDecl = new CodeVariableDeclarationStatement(tmpTypeRef, "tmpData");
这种方式有效。
答案 1 :(得分:0)
我对C ++ / CLI指针类型一无所知,但您可以使用Type.MakePointerType
为给定的非指针类型创建指针类型。你尝试过使用过:
new CodeParameterDeclarationExpression(typeof(char).MakePointerType(), "data")