2009-04-03 11 views
0
CodeVariableDeclarationStatement cvds = new CodeVariableDeclarationStatement(p.ParameterType, p.Name, 
         new CodePrimitiveExpression(INTARR())); 

Betrachten Sie den obigen Code. und wenn ich mein Projekt im Debug-Modus ausführen, sind dies die Werte, die in p.ParameterType und p.Name gespeichert werden.Verwendung von CodeVariableDeclaraionStament zum Deklarieren von Arrays

und INTARR() ist eine Methode, die ein Array von Ganzzahlen zurückgibt.

aber ich bekomme den Fehler, "Ungültige Primitive Typ: System.Int32 []. Erwägen Sie die Verwendung von CodeObjectCreateExpression."

Wie kann ich CodeObjectCreateExpression für den obigen Code verwenden, d. H. Ich möchte ein Array von Ganzzahlen in CodeVariableDeclarationStatement übergeben.

Antwort

1

Arrays sind nicht primitiv so sein sollte. Sie müssen CodeArrayCreateExpression verwenden:

Int32[] ints = INTARR(); 
CodeExpression[] intExps = new CodePrimitiveExpression[ints.Length]; 
for (int i = 0; i < ints.Length; i++) 
    intExps[i] = new CodePrimitiveExpression(ints[i]); 
CodeVariableDeclarationStatement cvds = new CodeVariableDeclarationStatement(
    "Int32[]", "x", new CodeArrayCreateExpression("Int32", intExps)); 
0

basierend auf dieser link ich glaube, es gefällt dieses

CodeVariableDeclarationStatement cvds = new CodeVariableDeclarationStatement(typeof(Int32[]), "x", 
         new CodePrimitiveExpression(INTARR())); 

vielleicht dieses ?:

CodeVariableDeclarationStatement cvds = new CodeVariableDeclarationStatement(typeof(Int32[], "x", 
         new CodePrimitiveExpression(INTARR()));      

p.ParameterType = typeof(Int32); 
p.Name = "x"; 
Verwandte Themen