如何为运行在1个属性到10个属性之间的类创建动态属性
本文关键字:属性 之间 创建 动态 10个 运行 1个 | 更新日期: 2023-09-27 18:28:05
我需要在运行时创建一个类,而不知道确切的属性计数。属性的数量从1到10不等。在C#中有办法做到这一点吗?
我查了ExpandoObject
买它需要写的物业名称。然而,我想要的是在for循环中添加属性,比如:
MyDyanmicClass.Add("PropertyName" , TYPE , VALUE);
使用字典。
public Dictionary<string, object> properties = new Dictionary<string, object>();
因此,字符串是属性的名称,对象表示属性本身。然后使用将属性添加到动态类中
properties.Add("Ref", 123);
properties.Add("Description", "Underpants");
并通过铸造获得值:
int ref = (int)properties["Ref"];
string description = (string)properties["Description"];
在类中,应该有一个名为properties
的类型为List<Tuple<string, object>>
的字段,它存储用于访问对象、实际对象和对象类型的键。
添加新属性的方法如下:
public void AddNewProperty<T> (string name, T value) {
properties.Add (Tuple.Create<string, object> (name, value));
}
为了取回财产,
public T Get<T> (string name) {
var query = from tuple in properties
where tuple.Item1 == name
select tuple;
var property = query.First();
return (T)property.Item2;
}