尝试使用泛型组合两个类似的用户控件

时间:2014-06-23 01:04:32

标签: c# asp.net user-controls

我看到了以下here in StackOverflow

void SomeMethod<T>(List<T> someList)
{
    if (typeof(T) == typeof(c1))
    {
         // etc
    }
}

我试图以某种方式将其合并到下面。我尝试使用泛型

组合两个非常相似的用户控件
public partial class UcCustomers : System.Web.UI.UserControl
{
    List<Customer> _list;

    public void SetDataSource(List<Customer> customers){
        _list = customers
    }

}


public partial class UcProducts : System.Web.UI.UserControl
{
    List<Products> _list;

    public void SetDataSource(List<Product> products){
        _list = products
    }

}

问题是,我想设置那个成员_list变量,但除非我做了类似的事情,否则它不会让我:

IEnumerable _list;

但是我不能在这种变量中使用lambda。我的目标是拥有一个具有一些非常基本的CRUD功能的GridView用户控件。

我认为SetDataSource可以接受通用List并将其作为成员变量使用。

1 个答案:

答案 0 :(得分:0)

我认为具有约束的泛型类将是您所需要的。如果您的ProductsCustomer不是来自UserControl,则可以修改where子句。

 public class Uc<T> : UserControl where T : UserControl
    {
        private List<T> _list;

        public void SetDataSource(List<T> list)
        {
            _list = list;
        }
    }