Хотите создать пользовательский класс типа Dictionary <int, T> - PullRequest
3 голосов
/ 08 июня 2009

Я хочу создать пользовательский класс, который в основном содержит словарь.

Я хочу добавить к нему свойство с именем Name.

Я пытался:

public class MyDictionary<int, T> : Dictionary<int, T>
{
        public string Name { get; set;}

}

Кажется, не работает, есть идеи?

Обновление

Ошибка, которую я получаю:

Type parameter declaration must be an identifier not a type 

Ответы [ 2 ]

33 голосов
/ 08 июня 2009

Проблема с вашей декларацией. Вашему пользовательскому классу нужен только один параметр типа, поскольку тип int никогда не меняется:

public class MyDictionary<T> : Dictionary<int, T>
{
    public string Name { get; set; }
}
0 голосов
/ 15 января 2016

Если вы можете обернуть словарь, то почему бы не это:

public class Context<T>
{
    private Dictionary<int, T> dictContext;
    public String Name { get; private set; }

    public Context (String name)
    {
        this.Name = name;
        dictContext = new Dictionary<int, T>();
    }

И вы можете добавить всех членов словаря:

    public int Count { 
        get {  return dictContext.Count();  }
    }
    public Dictionary<int, T>.KeyCollection Keys
    {
        get { return dictContext.Keys; }
    }
    public Dictionary<int, T>.ValueCollection Values
    {
        get { return dictContext.Values; }
    }


    public void Add (int key, T value)
    {
        dictContext.Add(key, value);
    }

    public bool Remove (int key)
    {
       return  dictContext.Remove(key);
    }

и объявить свой

    public void MyFunction ()
    {
        //do nothing
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...