2009-08-06 74 views
0

我怎樣才能讓一個類型的引用,所以我可以用myreference名字後來......在其最簡單的形式...定義基於自己的類型上的現有類型

敏 - 源自INT

然後,在其他地方,我會參考MyInt。踢球者是我需要這個「#define」分別在類定義中,它將被分類並可能是不同的類型。其實際意圖是

MyTypeSQLCmd = OleDbCommand 
OR 
MyTypeSQLCmd = SQLiteCommand 

和我的子類只是指,並能夠創建一個新的MyTypeSQLCmd();

---讓我多說一點。

我有一個類連接到OleDB類型的數據庫。 我有另一個類連接到SQLite數據庫。

我有另一個類將從上面的任何一個派生,但將具有附加功能。因此,而不是知道哪個後端我將連接到,我不希望有IF的所有的地方一樣......

if(connectingToSQLite) 
    MyCmd = new SQLiteCommand(); 
else 
    MyCmd = new OleDbCommand(); 

,因爲隨後,可用常用的方法,我需要是相同的參考文獻,如

MyCmd.Parameters.Add(...)

所以,我不能預先聲明變量爲一個 「類型」 或另一個如

的OleDbCommand MyCmd; SQLiteCommand MyCmd;

我只想要一個實例,所以我希望得到一種「別名」類型,它將被接受並允許在沒有編譯器錯誤的情況下繼續。

回答

2

你是不是真的找一個接口,即IDbCommand

+0

通過「轉到定義」了繼承鏈,我想我明白你的意思,並認爲這會工作。 ..如果成功,我會標誌。 – DRapp 2009-08-06 13:21:34

1

您可以從中繼承或使用using聲明。

using SomeClass = SomeOtherClass; 
1

使用泛型:

class SubClass<MyTypeSQLCmd> where MyTypeSQLCmd : IDbCommand, new { 
    ... 
} 

現在的類可以創建類型的實例,並使用在所有的方法IDbCommand接口。您可以爲任何數據庫命令類型創建類的實例。

+0

+1,這種方法效果很好。我也使用它... – Steve 2009-08-06 14:57:39

0

如果您正在尋找類似於C typedef的東西,那麼雖然文件頂部有using語句可能,但它通常不是最理想的解決方案。這種情況的想法是「編程到界面」。也就是說,您可以找到一個超類或接口來實現您正在查找的功能(在本例中分別爲System.Data.Common.DbCommandSystem.Data.IDbCommand)並對其進行編程。然後,您實例更具體類型(如SqlCommandOleDbCommand表示具體實現使用。

相關問題