문제

해시 테이블 객체를 작성하고 키와 값 프로그래밍 방식으로 할당하기위한 코드를 생성하고 싶습니다. 그것은 비슷해야합니다

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;.....

여기에 그것은 프로그램을 만들어 낸 메소드를 만듭니다. 이제 해시 테이블을 만들고 싶습니다.

도움이 되었습니까?

해결책 3

CodeParameterDeclarationExpression hashTableParam =new CodeParameterDeclarationExpression();
hashTableParam.Name = "hastable";

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

이것은 내가 찾고 있던 것 당신의 노력에 감사드립니다

다른 팁

코드 생성을 위해 텍스트 템플릿 변환 툴킷 (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은 데이터 소스의 레코드 수입니다.

가장 좋은 점은 Visual Studio 2008에 바로 제작된다는 것입니다.

나는 그것에 대한 좋은 경험을 가지고있었습니다

당신은 어디에 붙어 있습니까? CodememberMethod를 만드는 방법을 알고 있으므로 CodememberMethod.statements Collection에 명령문 객체를 추가 할 수 있어야합니다. 변수 선언에 대해 하나의 명령문이 필요하고, 하나는 할당/초기화를위한 하나, 각 "add"-Call마다 하나가 필요합니다.

BTW : 과거에 Code Dom을 사용했지만 템플릿 엔진으로 직접 코드를 생성하는 것은 작동하지 않으며 코드를 훨씬 더 읽기 쉽게 만듭니다. 나는 보통 사용합니다 StringTemplate, 그리고 나는 그것에 매우 만족합니다.

내가 알고있는 두 코드 생성기는 ...

코드 미스 ... 메인 사이트, a 무료 버전

Scott Hanselman에있는 T4는 그것에 대한 블로그 게시물을 가지고 있습니다. 여기

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top