如何使用泛型将此方法放在父类中?

时间:2009-06-10 12:48:25

标签: c# generics inheritance

我有一些复数项类,每个类都有单数项类的集合,如下所示:

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 个答案:

答案 0 :(得分:6)

这是完全正确的,除了你还需要{:1}}之后的项目:

<T>

要实例化:

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

答案 1 :(得分:5)

是的,虽然物品也必须是通用的。

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

让Items继承自IEnumerable<TItem>也许是有意义的。