2012-02-24 5 views
1

簡単に言えば、ユーザーデータを保存するためにシリアル化できる辞書的な機能を持つオブジェクトのセットが必要でした。元の辞書はItemオブジェクトの配列と、ユーザーが保持する各オブジェクトの量を保持するDictionaryクラスでした。インターネット上でいくつかの勧告を見つけた後、KeyedCollectionから自分の辞書に似たクラスを実装しようとしましたが、オブジェクトを追加することができませんでした。オブジェクトを間違って追加していますか、私のコレクションに何か問題がありますか?KeyedcollectionからSerializble DIctionaryを実装しようとしましたが、オブジェクトを追加することができません

'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型を投げるが、私はそこに項目オブジェクトのコレクションを取得しようとしている...

答えて

1

場合は後方にそれを持って、それは次のようになります。

public class SerialDictionary : KeyedCollection<int, Item> 

鍵タイプが署名の最初に来て、次にアイテムタイプになります。

+0

インデックスがint以外のものである可能性はありますか?もともとItemクラスをインデックスとして使用していましたが、必要に応じて実際に変更することができます。 – ChargerIIC

関連する問題