2014-06-23 46 views
0

兩個類似的用戶控件結合起來,我看到下面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可以接受一個泛型列表並使用它作爲成員變量。

+0

結合如何?你可以在你的問題中添加更多的代碼或上下文嗎?如果您試圖組合兩種控件通用的代碼,則還可以考慮製作基本用戶控件,然後讓客戶和產品從中繼承。 – Tim

+0

您能否提供您的代碼並在代碼中指定問題以澄清問題? –

+0

換句話說,你想要像'public void SetDataSource (T dataSource)''?我認爲這是相當多餘的,因爲它已經在使用一個通用List ...你能舉一個例子(僞代碼,甚至是)你在找什麼? – Tim

回答

0

我認爲一個帶約束的泛型類將是你所需要的。如果您的ProductsCustomer不是從UserControl派生的,您可以修改where子句。

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

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