在 C# 中以编程方式动态定义 类 中的属性
Programmatically define properties in classes dynamically in C#
我正在尝试以某种方式初始化 C# 程序中的对象,使得属性和值仅在 运行 时间已知。我正在使用一个 nuget 包,它需要知道 class 定义才能正常运行,我正在尝试以编程方式创建这个 class.
基于 this post I just found,使用 ExpandoObject 似乎是朝着正确方向迈出的一步,因为我们可以在 运行 时间设置属性,但是这些属性仍然是先验和硬性已知的编码到程序中。我希望能够实现的是拥有任意多个属性的列表 ["a"、"b"、"c"、"d"、"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();
}
}
但是,我们当然 运行 遇到了我们无法使用 [] 索引对象的问题。是否有任何类似的动态对象类型可以让我实现我正在寻找的功能?
评论中真正的问题似乎是"How can I load rows dynamicallly using CsvHelper"?动态支持是在几年前的 2.0 版本中添加的。您可以通过传递 dynamic
作为类型来 return 动态对象,即:
dynamic records=csv.GetRecords<dynamic>();
我正在尝试以某种方式初始化 C# 程序中的对象,使得属性和值仅在 运行 时间已知。我正在使用一个 nuget 包,它需要知道 class 定义才能正常运行,我正在尝试以编程方式创建这个 class.
基于 this post I just found,使用 ExpandoObject 似乎是朝着正确方向迈出的一步,因为我们可以在 运行 时间设置属性,但是这些属性仍然是先验和硬性已知的编码到程序中。我希望能够实现的是拥有任意多个属性的列表 ["a"、"b"、"c"、"d"、"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();
}
}
但是,我们当然 运行 遇到了我们无法使用 [] 索引对象的问题。是否有任何类似的动态对象类型可以让我实现我正在寻找的功能?
评论中真正的问题似乎是"How can I load rows dynamicallly using CsvHelper"?动态支持是在几年前的 2.0 版本中添加的。您可以通过传递 dynamic
作为类型来 return 动态对象,即:
dynamic records=csv.GetRecords<dynamic>();