如何通过自定义集合的属性名称访问该属性
本文关键字:属性 访问 何通过 自定义 集合 | 更新日期: 2023-09-27 18:24:32
我想实现一个包含类实例的自定义集合。
这是我的课,这里稍微简化一下。
public class Property : IComparable<Property>
{
public string Name;
public string Value;
public string Group;
public string Id;
...
...
public int CompareTo(Property other)
{
return Name.CompareTo(other.Name);
}
}
我正在将属性实例添加到列表集合
Public List<Property> properties;
我可以遍历属性,也可以通过索引位置访问特定属性。
然而,我希望能够通过其名称访问该物业,以便
var myColor = properties["Color"].Value;
我没有一个有效的方法来做到这一点。我认为应该将属性编写为自定义列表集合类来实现这一点。有人有我可以查看的代码示例吗?
谢谢你的帮助。
已经提到了最简单的方法,但我看到了两个:
方法1转换为字典并在那里查找。
var props = properties.ToDictionary( x => x.Name );
Property prop = props["some name"];
方法2创建您自己的支持索引的集合类型根据您的任意类型。
public class PropertyCollection : List<Property>
{
public Property this[string name]
{
get
{
foreach (Property prop in this)
{
if (prop.Name == name)
return prop;
}
return null;
}
}
}
并使用此集合代替
PropertyCollection col = new PropertyCollection();
col.Add(new Property(...));
Property prop = col["some name"];
您可以使用字典:
Dictionary<string, Property> properties = new Dictionary<string, Property>();
//you add it like that:
properties[prop.Name] = prop;
//then access it like that:
var myColor = properties["Color"];
为此使用Dictionary<string,Property>
。键将是属性名称,值将是属性实例本身。