在 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);
我需要使用 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);