我有一个包含类对象的列表.我想知道如何在以后添加属性,而不是从一开始就直接将属性实现到该类中.
public class Example{
public int ExampleInt {get; set;}
public string ExampleString {get; set;}
public double ExampleDouble {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
我有一个Example类似的列表:List<Example>
现在,我怎样才能将ExampleBool属性添加到其中的每个对象中List<Example>,而不是直接将其实现到Example类中?
C#是静态类型语言.您无法动态添加或删除类成员.但是你可以创建一个新的匿名类,它将具有你想要的任何属性:
var examples = new List<Example>();
var result = from e in examples
select new {
e.ExampleInt,
e.ExampleString,
e.ExampleDouble,
ExampleBoolean = true
};
Run Code Online (Sandbox Code Playgroud)
在某些情况下,使用动态对象而不是静态类型的类可能会有所帮助.看看ExpandoObject - 它允许您在运行时动态添加和删除成员.但是你将失去IntelliSense,性能将受到影响,你将不得不从头开始创建每个对象:
var examples = new List<dynamic>
{
new ExpandoObject(), // initially it does not have any properties
new ExpandoObject()
};
for (int i = 0; i < examples.Count; i++)
{
examples[i].ExampleInt = i;
// etc
}
for (int i = 0; i < examples.Count; i++) // we add new property
examples[i].ExampleBoolean = i % 2 == 0;
foreach(var example in examples)
Console.WriteLine($"{example.ExampleInt} {example.ExampleBoolean}");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
42 次 |
| 最近记录: |