我正在处理由实现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;
}
}
我在这里走在正确的轨道上吗?不知道下一步该做什么。
答案 0 :(得分:1)
你走在正确的轨道上。
只需将您的行set { paletteEntries.Add(key, value); }
替换为set {palletteEntries[key] = value;}
然后您需要开始做的就是将PalletteEntries添加到您的NamedPallette并使用它们,例如
NamedPalette myPallette = new NamedPallette();
PalletteEntry myPalletteEntry = new PalleteEntry(Color.Red, Color.Black);
myPallette ["myColors"] = myPalletteEntry;
var fetchedEntry = myPallette["myColors"];