簡體   English   中英

基於泛型的工廠具體退貨類型

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM