如何将字符串索引器添加到CollectionBase
本文关键字:添加 CollectionBase 索引 字符串 | 更新日期: 2023-09-27 18:15:00
我正在处理一个由第三方编写的实现System.Collections.CollectionBase:
的类。public class Palette : CollectionBase, ICloneable
唯一的问题是我只能通过整数索引访问它的元素:[0],[1],[2]。我需要增强这个类的功能,这样我就可以通过字符串访问元素,这样我就可以做这样的事情:
["asian"] = Color.Yellow, ["black"] = Color.Black, ["White"] = Color.White
所以我试着在我自己的类中把它包起来。到目前为止,我有:
public class NamedPalette : Palette
{
private Dictionary<string, PaletteEntry> paletteEntries =
new Dictionary<string, PaletteEntry>();
public PaletteEntry this[string key]
{
get { return paletteEntries[key]; }
set { paletteEntries.Add(key, value); }
}
public NamedPalette()
{
}
}
public class PaletteEntry
{
private Color color;
private Color color2;
public PaletteEntry(Color color, Color color2)
{
this.color = color;
this.color2 = color2;
}
}
我讲对了吗?不知道下一步该做什么
你做对了。
通过将set { paletteEntries.Add(key, value); }
行替换为set {palletteEntries[key] = value;}
行来更改set访问器以检查现有条目
然后您需要开始做的就是将PalletteEntries添加到您的NamedPallette并使用它们,例如
NamedPalette myPallette = new NamedPallette();
PalletteEntry myPalletteEntry = new PalleteEntry(Color.Red, Color.Black);
myPallette ["myColors"] = myPalletteEntry;
var fetchedEntry = myPallette["myColors"];