-1

ハッシュテーブルオブジェクトを作成し、プログラムでキーと値を割り当てるためのコードを生成したいと思います。それはに似ているはずです

Hashtable ht = new Hashtable();

ht.Add( "key1", "value1" );
ht.Add( "key2", "value2" );
ht.Add( "key3", "value3" );

例えば

CodeMemberMethod testMethod = new CodeMemberMethod();

        testMethod.Name = "Test" + mi.Name + "_" + intTestCaseCnt;
        testMethod.Attributes = MemberAttributes.Public;.....

ここでは、プログラムでメソッドを作成します。ハッシュテーブルを作成したいので、どのように質問しますか?

4

4 に答える 4

5

コード生成については、Text Template Transformation Toolkit(T4)を検討してください。

このテンプレート...

Hashtable ht = new Hashtable();
<#
    foreach (var obj in DataSource)
    {
#>
ht.Add( "<#= obj.Key #>", "<#= obj.Value #>" );
<#
    }
#>

...この出力を生成します...

Hashtable ht = new Hashtable();
ht.Add( "key1", "value1" );
ht.Add( "key2", "value2" );
ht.Add( "key3", "value3" );
...
ht.Add( "keyN", "valueN" );

ここで、Nはデータソース内のレコードの数です。

最良の点は、これがVisualStudio2008に組み込まれていることです。

私はそれで良い経験をしました

于 2009-04-09T09:55:53.573 に答える
1
CodeParameterDeclarationExpression hashTableParam =new CodeParameterDeclarationExpression();
hashTableParam.Name = "hastable";

hashTableParam.Type = new CodeTypeReference(typeof(System.Collections.Hashtable));

これは私が探していたものです。あなたの努力に感謝します

于 2009-04-09T12:42:36.590 に答える
1

どこで立ち往生していますか?CodeMemberMethod の作成方法を知っているので、ステートメント オブジェクトを CodeMemberMethod.Statements コレクションに追加できるはずです。変数宣言に 1 つのステートメント、代入/初期化に 1 つ、各「追加」呼び出しに 1 つのステートメントが必要です。

ところで: 過去に Code DOM を使用したことがありますが、テンプレート エンジンを使用してコードを直接生成すると、作業が少なくなり、コードがはるかに読みやすくなることがわかりました。私は通常StringTemplateを使用していますが、とても満足しています。

于 2009-04-09T10:52:05.170 に答える
0

私が知っている2つのコードジェネレーターは...

Codesmith at ...メインサイト無料版付き

スコットハンゼルマンにあるT4はここにそれについてのブログ投稿を持っています

于 2009-04-09T09:58:31.287 に答える