我试图以一种方式初始化C#程序中的对象,使得属性和值都只在运行时才知道。我正在使用一个nuget包,它需要知道类定义才能正常运行,我试图以编程方式创建这个类。
基于this post I just found,看起来使用ExpandoObject是朝着正确方向迈出的一步,因为我们可以在运行时设置属性,但是这些属性仍然是先验已知并且硬编码到程序中。我希望能够实现的是拥有任意多个属性的列表[" a"," b"," c"," d&# 34;," e",...]并且能够在新实例化的对象中将它们设置为属性,如下所示:
class Program
{
static void Main(string[] args)
{
dynamic chano = new ExpandoObject();
string test = "a";
chano[test] = "Free the Carter, people need the Carter";
Console.WriteLine(chano[test]); //want to console "Free the Carter...", of course this fails in compilation
Console.ReadKey();
}
}
但是,当然我们遇到的问题是我们无法使用[]索引对象。是否有任何类似的动态对象类型可以让我实现我正在寻找的功能?
答案 0 :(得分:2)
评论中的真实问题似乎是"如何使用CsvHelper动态加载行"?几年前在2.0版中添加了动态支持。您可以通过传递dynamic
作为类型来返回动态对象,即:
dynamic records=csv.GetRecords<dynamic>();