【发布时间】:2013-11-27 16:48:10
【问题描述】:
有没有办法在运行时从字符串中填充对象的属性?任何可以提供帮助的图书馆? 例如,我有这个类:
public class TestObject
{
public string Property1 { get; set; }
public int Property2 { get; set; }
public TestObject2 TestObject2 { get; set; }
}
public class TestObject2
{
public string Property1 { get; set; }
}
在我的真实案例中,该类还有其他几个子类、数组和其他数据类型。 我需要从文本、文件、列表中填充属性,内容如下:
TestObject.Property1 = "String Value"
TestObject.Property2 = 5
TestObject.TestObject2.Property1 = "Sub Property String"
我看到的一种可能性是扫描文本并使用反射分配值/对象。但在我寻找已经存在的东西之前。
【问题讨论】:
-
您是否考虑过使用序列化/反序列化(XML 或 JSON)?
-
您的文本文件格式是固定的还是允许您决定要如何使用值来填充对象?
-
为什么不想使用序列化?但是,如果您决定使用反射,this question 中有我的示例,它是如何完成的 - 尽管代码是针对 getter 的,但 setter 将非常相似。
-
每一行文本代表一个类属性/子属性,如示例中所述(“TestObject.Property2 = 5”),我从另一个应用程序接收它,所以我无法更改格式。我根据文本格式创建了类。我们的想法是将此文本转换为对象,以便在我的系统中使用此数据。