如何为运行在1个属性到10个属性之间的类创建动态属性

本文关键字:属性 之间 创建 动态 10个 运行 1个 | 更新日期: 2023-09-27 18:28:05

我需要在运行时创建一个类,而不知道确切的属性计数。属性的数量从1到10不等。在C#中有办法做到这一点吗?

我查了ExpandoObject买它需要写的物业名称。然而,我想要的是在for循环中添加属性,比如:

MyDyanmicClass.Add("PropertyName" , TYPE , VALUE);

如何为运行在1个属性到10个属性之间的类创建动态属性

使用字典。

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;
}