Короче говоря, мне нужен был набор объектов со словоподобной функциональностью, которые можно сериализовать для сохранения пользовательских данных. Исходный словарь представлял собой класс Dictionary, который содержал массив объектов Item и количество каждого объекта, «удерживаемого» пользователем. После нахождения некоторых рекомендаций в Интернете я попытался внедрить свой собственный словарь-класс из KeyedCollection, но, похоже, не могу добавить к нему объекты. Я неправильно добавляю объекты или что-то не так с моей коллекцией?
Класс 'SerialDictionary':
public class SerialDictionary : KeyedCollection<Item, int>
{
protected override int GetKeyForItem(Item target)
{
return target.Key;
}
}
public class Item
{
private int index;
private string attribute;
public Item(int i, string a)
{
index = i;
attribute = a;
}
public int Key
{
get { return index; }
set { index = value; }
}
public string Attribute
{
get { return attribute; }
set { attribute = value; }
}
}
Основная форма (которая пытается добавить объект)
public partial class Form1 : Form
{
SerialDictionary ItemList;
Item orb;
public Form1()
{
InitializeComponent();
ItemList = new SerialDictionary();
orb = new Item(0001, "It wants your lunch!");
orb.Key = 001;
}
private void button1_Click(object sender, EventArgs e)
{
ItemList.Add(orb);
}
}
Ошибка при получении объекта:
Наилучшее совпадение перегруженного метода для 'System.Collections.ObjectModel.Collection.Add (int)' имеет недопустимые аргументы
Если я добавляю туда int, он компилируется, но я пытаюсь получить коллекцию объектов Item там ...