我需要使用CodeDOM创建这样的对象(见下文)。
internal static readonly Dynamic class1 = new Dynamic
{
VendorId = "VTS",
Test = 10.33f
};
我所做的尝试是在类Dynamic
(使用CodeDOM创建)中创建一个构造函数(请参见下文),该构造函数将所有需要的值都设置为参数。使用Dynamic
类的代码给出了一个错误,即它不能使用带有参数的构造函数(因为它是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在构造函数中不需要参数的情况下将值分配给属性?
答案 0 :(得分:1)
借助@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);