我想实现一个包含我的类实例的自定义集合。
这是我的课,这里有点简化。
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);
}
}
我将Property的实例添加到List集合
Public List<Property> properties;
我可以遍历属性或通过索引位置访问特定属性。
但我希望能够通过其名称访问该属性,以便
var myColor = properties["Color"].Value;
我没有一种有效的方法来做到这一点。我假设应该将属性编写为自定义列表集合类来实现此目的。有没有人有我可以看的代码示例?
感谢您的帮助。
答案 0 :(得分:1)
您可以使用Dictionary:
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"];
答案 1 :(得分:1)
已经提到过最简单的方法,但我看到两个:
方法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"];
答案 2 :(得分:0)
为此目的使用Dictionary<string,Property>
。键将是属性名称,值将是Property实例本身。