如何将字符串索引器添加到CollectionBase

时间:2011-11-15 22:46:12

标签: c# collections

我正在处理由实现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;
    }
}

我在这里走在正确的轨道上吗?不知道下一步该做什么。

1 个答案:

答案 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"];