我有一個基類Foo,其中包含一個用於標識數據庫項目中主鍵的屬性。 其他類從我的基類Foo下降,幷包含這些類的特殊性的另一個屬性。每個後代類表示數據庫中的一個不同的表。從基類型列表中返回正確的後代類型
通常,當這些數據被加載時,這些項目被存儲在類型列表<Foo>的相同列表中。
當我需要使用一些項目時,我發現這是基於主鍵。
我的問題發生在這些項目具有相同的主鍵,並且當從後代類FooB中查找項目時最終找到類FooA,因爲這是首先出現的,那麼執行到FooB的投射的位置會引起一個注意。
var list = new List<Foo>();
list.Add(new FooA() { PrimaryKey = 1 });
list.Add(nwe FooB() { PrimaryKey = 1 });
public Foo FindItem(int pk)
{
return list.First(it => it.PrimaryKey == 1);
}
在很多地方我用這種方法根據我的需要找到我的物品。
var item = (FooB)FindItem(1);
在其他類:
var item = (FooA)FindItem(1);
在我的情況下,該代碼在系統中的很多地方使用,更改列表<富>到下降的項目清單是一個解決方案,但這種手段在很多地方做出改變,因爲我無法在每個地方都傳遞每個項目的類型。
我需要一個不會更改基本列表的解決方案。
爲什麼不能更改基準表? – Jonathan