在 CodeObjectCreateExpression 中分配对象的 属性 值

Assign property values of an object in a CodeObjectCreateExpression

我需要使用 CodeDOM 创建这样的对象(见下文)。

internal static readonly Dynamic class1 = new Dynamic
{
    VendorId = "VTS",
    Test = 10.33f

};

我所做的尝试必须在 class Dynamic(使用 CodeDOM 创建)中创建一个构造函数(见下文),它将所有需要的值设置为 parameters.Sadly, 一切正常后,使用 Dynamic class 的代码给出了一个错误,它不能使用带参数的构造函数(因为它是 ML.NET 的数据结构)

CodeConstructor constructor = new CodeConstructor();

constructor.Attributes = MemberAttributes.Public;

constructor.Parameters.Add(new CodeParameterDeclarationExpression(typeof(float), "test"));

CodeFieldReferenceExpression reference =
    new CodeFieldReferenceExpression(
        new CodeThisReferenceExpression(), "test");

constructor.Statements.Add(new CodeAssignStatement(reference, 
    new CodeArgumentReferenceExpression("test")));

targetClass.Members.Add(constructor);

如何在不需要使用 CodeDOM 的构造函数中的参数的情况下为属性赋值?

在@JeroenMostert 的评论帮助下,我找到了解决我的问题的方法,可以用作 ML.NET 的数据结构:

 CodeConstructor constructor = new CodeConstructor
        {
            Attributes = MemberAttributes.Public
        };


    foreach (var item in features)
        {
            CodeFieldReferenceExpression reference =
            new CodeFieldReferenceExpression(
                new CodeThisReferenceExpression(), item.Id);

            constructor.Statements.Add(new CodeAssignStatement(reference, new CodePrimitiveExpression(item.TestCase)));
        }

        targetClass.Members.Add(constructor);