2011-07-18 23 views
2

タイトルが示唆するように、私は "入れ子にする"ことを目指しています。あるいは、CodeDomを使用してC#で配列内に配列を作成しようとしています。 T.InvokeがメソッドであるCodeDomネストされた配列

T.Invoke(null, new object[] { new string[] {} }); 

:ここ

は私が複製しようとしているラインです。

で上記の行を作成することができます。瑕疵はほとんどありません。私が持っている唯一の問題は、{}}の第2セットを作成することです。私が使用したコードは以下の通りです。

CodeMethodInvokeExpression invoke_expression = new CodeMethodInvokeExpression(
new CodeTypeReferenceExpression("T"),"Invoke", 
new CodePrimitiveExpression(null), 
new CodeArrayCreateExpression(typeof(object), 
new CodeExpression[] { 
new CodeArrayCreateExpression(typeof(string[]), 
new CodeExpression[] {})}))); 

おそらく誰かが自分のコードを理解できて、たぶん私のエラーを見つけることさえできます。

CodeMethodInvokeExpression invoke_expression = new CodeMethodInvokeExpression(
    new CodeTypeReferenceExpression("T"), 
    "Invoke", 
    new CodePrimitiveExpression(null), 
    new CodeArrayCreateExpression(
     typeof(object), 
     new CodeExpression[] 
     { 
      new CodeArrayCreateExpression(
       typeof(string[]), 
       new CodeExpression[] 
       { 
        new CodeSnippetExpression("") 
       })/*CodeArrayCreateExpression */ 
     })/*CodeArrayCreateExpression */ 
    )/*CodeMethodInvokeExpression*/; 
+0

エラーは何ですか?

は、ブラケットを作成するにそれを強制するために、空のCodeSnippetExpressionを使用し – user7116

+0

C#は分かりませんが、{}は文字列のリテラルですか? (値?) –

+0

私は質問でそれを書いた - "{}"の最後の括弧は現れません。それで、次のようになります:T.Invoke(null、new object [] {new string []}) –

答えて

1

エヴァン

、任意の助けをありがとう受け取った出力は何ですか?
+0

それは完全に動作します。 「CodeSnippetExpression」が角かっこを作成することをどのように知っていましたか? –

+0

私は以前この問題に遭遇し、ブランクの 'CodeSnippetExpression'が、CodeDomが"不要 "と感じる出力コードを取得するのに便利であることを学びました。 – user7116