通过System.CodeDom生成C ++ / CLI指针类型

时间:2011-04-07 06:22:21

标签: .net c++-cli code-generation

我通过.NET的System.CodeDom生成C ++ / CLI代码。

最近,我不得不创建一个带有指针的C ++ / CLI方法,比如int foo(char *data) ,结果很棘手。

System.CodeDom.CodeParameterDeclarationExpression(type, name)仅创建带句柄(^)的参数,而不是poiters(*),我找不到办法。

怎么可能呢?任何线索都表示赞赏。

2 个答案:

答案 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")