c# CodeDOM - 初始化数组

c# CodeDOM - Initialize array

我正在尝试使用 CodeDOM 创建一个简单的 dll 运行时。 我很清楚我需要什么来完成这个简单的测试应用程序。

我需要使用 CodeDOM 对象创建此语句:

List<string> test = new List<string>() {"A", "B", ... }

我只是有这个语句来声明一个包含 n 个值的列表,但没有找到达到我需要的说明。

这是我的实际代码:

CodeCompileUnit compileUnit = new CodeCompileUnit();            
CodeNamespace samples = new CodeNamespace("ClassLibrary1");

compileUnit.Namespaces.Add(TestNamespace);

samples.Imports.Add(new CodeNamespaceImport("System"));
samples.Imports.Add(new CodeNamespaceImport("System.Collections.Generic"));            
samples.Imports.Add(new CodeNamespaceImport("System.Text"));            

CodeTypeDeclaration _class = new CodeTypeDeclaration("TestClass");

CodeMemberField _field = new CodeMemberField();
_field.Attributes = MemberAttributes.Private;
_field.Name = "_testMember";
_field.Type = new CodeTypeReference(typeof(List<string>));

//This is where I cannot understand how to insert the values
_field.InitExpression = new CodeObjectCreateExpression(new CodeTypeReference(typeof(List<string>)), new CodePrimitiveExpression(64));            

class1.Members.Add(_field);

如何使用一些默认值初始化列表(或数组)?

提前致谢。

如建议的那样,答案在 CodeArrayCreateExpression 中。

这是完整的(有效的)代码片段:

        CodeCompileUnit compileUnit = new CodeCompileUnit();
        CodeNamespace samples = new CodeNamespace("ClassLibrary1");

        compileUnit.Namespaces.Add(samples);

        samples.Imports.Add(new CodeNamespaceImport("System"));
        samples.Imports.Add(new CodeNamespaceImport("System.Collections.Generic"));
        samples.Imports.Add(new CodeNamespaceImport("System.Text"));

        CodeTypeDeclaration _class = new CodeTypeDeclaration("TestClass");

        CodeMemberField _field = new CodeMemberField();
        _field.Attributes = MemberAttributes.Private;
        _field.Name = "_testMember";
        _field.Type = new CodeTypeReference(typeof(List<string>));

        var initialiseExpression = new CodeArrayCreateExpression(
            new CodeTypeReference(typeof(string)),
            new CodePrimitiveExpression("A"),
            new CodePrimitiveExpression("B"),
            new CodePrimitiveExpression("C"));
        _field.InitExpression = new CodeObjectCreateExpression(new CodeTypeReference(typeof(List<string>)), initialiseExpression);
        _class.Members.Add(_field);

重要的部分是定义数组的新 initialiseExpression 变量。