从静态 class c# 访问匿名对象 属性
Access anonymous object property from static class c#
我有一个包含多个匿名对象的静态 class。每个对象都有不同数量的属性,但每个 属性 始终是创建的对象 class.
static public class Fields{
static public Object FieldInfo1 = new {
Customer = new FieldInformation("value1","value2")
}
static public Object FieldInfo2 = new {
Customer = new FieldInformation("value1","value2"),
Company = new FieldInformation("value1","value2"),
}
}
我尝试在第 class 秒访问 Fields.FieldInfo1.Customer
(Program.cs,它是一个控制台应用程序)但它不工作,我只得到 Fields.FieldInfo1.
什么是我做错了吗?
您需要将其转换为对象的类型。因为你没有(在编译时)强制转换 as dynamic
:
var obj = Fields.FieldInfo1 as dynamic;
var value = obj.Customer.Prop1; // "value1"
但我不明白你为什么需要这样做。这不像 C#,它是一种强类型语言。在我看来,您应该重新考虑您的设计。
This 可能会为您提供一个起点,让您了解何时可以正确使用匿名类型
我有一个包含多个匿名对象的静态 class。每个对象都有不同数量的属性,但每个 属性 始终是创建的对象 class.
static public class Fields{
static public Object FieldInfo1 = new {
Customer = new FieldInformation("value1","value2")
}
static public Object FieldInfo2 = new {
Customer = new FieldInformation("value1","value2"),
Company = new FieldInformation("value1","value2"),
}
}
我尝试在第 class 秒访问 Fields.FieldInfo1.Customer
(Program.cs,它是一个控制台应用程序)但它不工作,我只得到 Fields.FieldInfo1.
什么是我做错了吗?
您需要将其转换为对象的类型。因为你没有(在编译时)强制转换 as dynamic
:
var obj = Fields.FieldInfo1 as dynamic;
var value = obj.Customer.Prop1; // "value1"
但我不明白你为什么需要这样做。这不像 C#,它是一种强类型语言。在我看来,您应该重新考虑您的设计。
This 可能会为您提供一个起点,让您了解何时可以正确使用匿名类型