問題:我有一個實體類(基類),我從中多次繼承它。現在我的所有派生類中都有一個Add
-方法和一個Validate
-方法。這些函數在所有派生類中都是相同的,它們是static
。從靜態基類方法調用靜態派生類方法
這是我Add
- 方法
public static long Add(DBData[] UserData)
{
SortedDictionary<string, DBData> Data = new SortedDictionary<string, DBData>();
foreach (DBData d in UserData)
{
Data.Add(d.FieldName, d);
}
if (Project.Validate(Data, OperationMode.Add))
{
return DBUtility.Insert("Project", VSCommon.Serialise(Data));
}
else
{
return -1;
}
}
現在,我在上面的函數有「Project
」(2處,如果一個類型Project
這個函數的對象屬於過了,另一個是數據庫表名) 。這些是我所有派生類中的唯一區別。我想把這個Add
-方法放在我的基類中,這樣我就可以在每個派生類中多次跳過寫它。
我搜索,發現有些嘗試使用泛型,但我似乎沒有拿起它當我使用泛型聲明。當我打電話給Validate
- 方法出現編譯錯誤。此外,我需要該類的名稱爲string
以獲取相關的表名。
不知道我能夠定義我的問題,任何幫助表示讚賞。謝謝。
你試圖使用泛型的地方?什麼是編譯錯誤? – 2013-04-24 08:26:41
有很多你在這裏違反的面向對象編程的原則。 – 2013-04-24 08:31:10
@丹尼斯,我同意我認爲我缺少概念部分,但我不確定,我試着寫ADD法作爲ADD,並嘗試寫ADD法,然後嘗試使用T來代替Project.Validate,但是然後編譯器要求對類型進行強制轉換。我不知道該怎麼做?我的意思是我需要我的T是派生類型的,但我如何滿足編譯器的要求。 –
2013-04-24 08:44:09