0
我想實現一個工廠,該工廠基於調用的泛型返回一個類。基於通用的工廠混凝土返回類型
我現在有它的工作是這樣的:
public static TRepository GetInstance<T, TRepository>()
where TRepository : IRepository<T>, new()
{
return new TRepository();
}
調用它像這樣:
InvoiceRepository repo = RepositoryFactory.GetInstance<Invoice, InvoiceRepository>();
這工作,但我寧願沒有聲明返回類型。我想這樣稱呼它:
InvoiceRepository repo = RepositoryFactory.GetInstance<Invoice>();
這不是真的很重要,但它只是困擾我,我如果有任何明顯的解決方案好奇。
哪種類型應該在工廠建設?它應該搜索加載的程序集中實現「IRepository」接口的類型嗎? –
不知道這是否是一個修辭問題,但是是的,它應該返回IRepository的實現,因爲它們中只有一個。 e:我仍然是一名學生,很可能我有點遺忘某些可能對其他人顯而易見的事情。 –
ihendriks
您可以在工廠中創建一個專用字典('Dictionary'),它映射不同'T'及其相應的存儲庫類型。然後,當您被要求構建存儲庫時,可以使用字典來獲取存儲庫的類型,然後使用反射來構建存儲庫類型。 –