2013-08-21 69 views
1

我有以下類:繼承接口的通用類

public class DataInterop <T> where T : ITableAdapter 
{ 
    private ITableAdapter tableAdapter; 

    public DataInterop(T tableAdapter) 
    { 
     this.tableAdapter = tableAdapter; 
    } 
} 

在ITableAdapter接口都喜歡讀(定義的方法),寫(...),更新(...),刪除(...),...

現在我想的類DataInterop有從ITableAdapter接口的所有方法。

是否有可能爲通用級,從一個接口繼承?

+0

當然,爲什麼不能它?只要像在非泛型類中一樣實現這些方法即可......問題是什麼?之後的'DataInterop ' – Servy

+0

當然,只需添加' -interface-and-constrains- –

+0

可能重複ITableAdaper':http://stackoverflow.com/questions/6223075/how-do-i-define-a-generic-class-that-implements-an –

回答

3

你只需要後添加: ITableAdaperDataInterop<T>

public class DataInterop<T>: ITableAdapter where T: ITableAdapter 
{ 
    private ITableAdapter tableAdapter; 

    public DataInterop(T tableAdapter) 
    { 
     this.tableAdapter = tableAdapter; 
    } 
} 

(它看起來像你實現一個Adapter PatternDecorator Pattern

2

是的,它是可能的,當你處理的類的實例,而不知道在運行時的具體類型,它是特別有用。

的語法是:

public class DataInterop <T> : ITableAdapter where T : ITableAdapter 
+0

該死的..方式太遲;) – mnkypete

+0

所以這裏發生了什麼。 DataInterop的任務是在ITableAdapter接口中實現任何東西,通過未知類型參數T.未知類型參數T被約束爲從Interace派生,DataAdapter被分配用於在T中實現。得知告訴你,我對意圖/有用性感到困惑這個的。 –

+0

正如Matthew在上面提到的那樣,當實現裝飾器或適配器模式時,這可能是有用的,當聲明類將內部ITabelAdapter添加到邏輯時,但應該可以像使用表適配器本身一樣使用。這樣,類可以通過簡單地調用內部ITableAdapter來依賴基本邏輯。 – mnkypete

1

Ofcourse就可以了。樣品佈局 -

public interface IBar 
{ 
    string Name { get; set; } 
} 
public class Foo<T> : IBar 
{ 
    public string Name { get; set; } 
}