簡體   English   中英

如何創建一個類的構造函數以返回該類的實例的集合?

[英]How to create a constructor of a class that return a collection of instances of that class?

我的程序具有以下類定義:

public sealed class Subscriber
{
    private subscription;
    public Subscriber(int id)
    {
        using (DataContext dc = new DataContext())
        {
           this.subscription = dc._GetSubscription(id).SingleOrDefault();                
        }            
    }
}

,哪里

_GetSubscription()是一個存儲程序 ,它返回ISingleResult<_GetSubscriptionResult>類型的值

說,我有一個List<int>類型的List<int> ,該列表充滿了1000個id並且我想創建一個List<Subscriber>類型的訂戶集合。

如何在不循環調用構造函數1000次的情況下做到這一點?

由於我試圖避免頻繁地打開/關閉DataContext,以免給數據庫造成壓力。

TIA。

編寫一個靜態工廠方法來調用私有構造函數。

public sealed class Subscriber
{
    // other constructors ...

    // this constructor is not visible from outside.
    private Subscriber(DataContext dc, int id)
    {
       // this line should probably be in another method for reusability.
       this.subscription = dc._GetSubscription(id).SingleOrDefault();                
    }

    public List<Subscriber> CreateSubscribers(IEnumerable<int> ids)
    {
        using (DataContext dc = new DataContext())
        {

           return ids
             .Select(x => new Subscriber(dc, x))
             // create a list to force execution of above constructor
             // while in the using block.
             .ToList();
        }            

    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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