다음을 수행 할 C# (.Net 2.0) 코드를 생성하기 위해 CodeDom을 사용하려고합니다.CodeDom을 사용하여 배열 배열 (또는 들쭉날쭉 한 배열)을 초기화하는 방법은 무엇입니까?
int[][] myArray = new int[someSize][];
CodeDom에서 배열을 초기화하려면 CodeArrayCreateExpression이 필요합니다. MSDN의 말 :
언어에서 배열 배열을 허용하는 경우 CodeArrayCreateExpression 내에 CodeArrayCreateExpression을 중첩하여 만들 수 있습니다.
내가 알고있는 방법은, 유일한 가능성은 이런 식으로 뭔가를 작성하는 것입니다 :
// Declaration and initialization of myArray
CodeVariableDeclarationStatement variable =
new CodeVariableDeclarationStatement("System.Int32[][]", "myArray",
new CodeArrayCreateExpression("System.Int32[][]",
new CodeExpression[] { new CodeArrayCreateExpression("System.Int32[]", 0) }));
그러나이 생성이 :
int[][] myArray = new int[][] { new int[0] };
그것은 완벽 하진
하지만 난 그것으로 할 수있다 내가 생성 시간에 myArray의 크기를 알고 있다면, 그렇지 않습니다.
초기화를 수행하고 CodeDom에서 호출하는 함수를 작성할 수는 있지만 순수 CodeDom에서 수행 할 수 있다면 더 좋을 것입니다. 내가 뭘 놓 쳤니 ?
[편집] 배경 정보
아이디어는 자동으로 두 개체 표현 사이에 어댑터를 생성하는 것입니다. "나는 int [] [] 타입의 필드를 가진 컨테이너 객체와이 컨테이너의 두 표현을 가지고있다.
// Internal representation
public class InternalContainer {
int[][] myArray;
}
// Network representation
public class NetworkContainer {
int[][] myArray;
}
모든 크기의 배열에 적용 할 수있는 코드를 생성합니다.
하지만를 사용하여입니까? 그리고 나는 편집 할 수 없다. 어쨌든 일반 사례 구현에 감사드립니다. –