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

本文关键字:两个 控件 用户 泛型 组合 | 更新日期: 2023-09-27 18:10:02

我在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
    }
}

问题是,我想设置member_list变量但它不允许我这样做,除非我这样做:

IEnumerable _list;

但是我不能对这种类型的变量使用。我的目标是有一个GridView用户控件,它有一些非常基本的CRUD功能。

我认为SetDataSource可以接受一个通用的列表,并与它作为一个成员变量工作。

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

我认为具有约束的泛型类将是您所需要的。如果您的ProductsCustomer不是由UserControl派生的,您只需修改where子句。

 public class Uc<T> : UserControl where T : UserControl
    {
        private List<T> _list;
        public void SetDataSource(List<T> list)
        {
            _list = list;
        }
    }