Как я могу использовать дженерики, чтобы поместить этот метод в родительский класс? - PullRequest
1 голос
/ 10 июня 2009

У меня есть несколько множественных элементов классов, каждый из которых имеет коллекцию отдельных элементов классов, например:

public class Contracts : Items
{
        public List<Contract> _collection = new List<Contract>();
        public List<Contract> Collection
        {
            get
            {
                return _collection;
            }
        }
}

public class Customers: Items
{
        public List<Customer> _collection = new List<Customer>();
        public List<Customer> Collection
        {
            get
            {
                return _collection;
            }
        }
}

public class Employees: Items
{
        public List<Employee> _collection = new List<Employee>();
        public List<Employee> Collection
        {
            get
            {
                return _collection;
            }
        }
}

Я могу представить, что мог бы использовать дженерики, чтобы поместил это в родительский класс . Как я мог это сделать, я думаю, это будет выглядеть примерно так:

псевдокод:

public class Items
{
        public List<T> _collection = new List<T>();
        public List<T> Collection
        {
            get
            {
                return _collection;
            }
        }
}

Ответы [ 2 ]

6 голосов
/ 10 июня 2009

Это совершенно верно, за исключением того, что вы также хотите <T> после пунктов:

public class Items<T>
{
        public List<T> _collection = new List<T>();
        public List<T> Collection
        {
            get
            {
                return _collection;
            }
        }
}

Для создания экземпляра:

Items<Contract> contractItems = new Items<Contract>();
5 голосов
/ 10 июня 2009

Да, хотя Предметы также должны быть общими.

public class Items<TItem>
{
    private IList<TItem> _items = new List<TItem>();
    public IList<TItem> Collection
    {
        get { return _items; }
    }
    // ...
 }

Возможно, имеет смысл также иметь Предметы, наследуемые от IEnumerable<TItem>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...