我有我的存儲庫設置如下。使用通用接口存儲庫
interface IRepository<T> where T : DataRow
{
T Get(int key);
}
interface ICartonRepository : IRepository<CartonDataRow>
{
}
class CartonRepository : ICartonRepository
{
public CartonDataRow Get(int key)
{
}
}
我也有一個PackRepository,它的定義方式與CartonRepository相同。我想要做的是類似於以下內容。
IRepository<DataRow> repository;
switch (rowType)
{
case Carton:
repository = new CartonRepository();
break;
case Pack:
repository = new PackRepository();
break;
}
有沒有辦法實現這個目標?
只要您有一個確定具體存儲庫如何映射到您所提供的'rowType'的有效方法,理論上就完美無瑕。有沒有什麼具體的不工作? –
不知道我理解的意圖 - 如果您將存儲庫聲明爲IRepository,那麼對其Get方法的調用將返回一個編譯類型的DataRow,而不是它的一個子類。在這種情況下,您可能只需從IRepository中刪除泛型並將其返回DataRow :) –