[英]Factory concrete return type based on generic
我正在嘗試實現一個工廠,該工廠根據調用的泛型返回一個類。
我目前有這樣的工作:
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>();
這不是很重要,但這只是困擾我,我很好奇是否有任何明顯的解決方案。
public interface IRepository<T>
{
}
public class Repository<T> : IRepository<T>
{
}
public static class RepositoryFactory
{
public static IRepository<T> GetInstance<T>()
where T : new()
{
return new Repository<T>();
}
}
然后,這樣稱呼它:
var repo = RepositoryFactory.GetInstance<Invoice>();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.