我想加载一个属性文件(它是一个.csv文件,每行都有一个名称和相关的数值),然后访问这些属性值,如下所示:FileLoader.PropertyOne
或FileLoader.PropertyTwo
.问题是我不想为每个值写一个属性,我希望它们是从文件生成的.所以
public class FileLoader
{
public int Property1 { get; private set; }
}
Run Code Online (Sandbox Code Playgroud)
不是我想要的.这可能吗?我看不到任何方法,因为显然编译器不会知道属性名称.也许类似的东西?
Dyn*_*ard 15
在C#4.0中,您可以使用ExpandoObject,链接包含很好的解释和一些用例,例如:
dynamic contact = new ExpandoObject();
contact.Name = "Patrick Hines";
contact.Phone = "206-555-0144";
contact.Address = new ExpandoObject();
contact.Address.Street = "123 Main St";
contact.Address.City = "Mercer Island";
contact.Address.State = "WA";
contact.Address.Postal = "68402";
Run Code Online (Sandbox Code Playgroud)
虽然ExpandoObject的强大功能是动态创建复杂的分层对象,但我认为即使对于简单的动态定义对象,您也可以使用它来获得闪亮的语法.
编辑:这是关于SO的另一个答案,由编写之前链接的文章的同一专栏作者添加有关ExpandoObject的好处的详细信息