![](/img/trans.png)
[英]Create instances of a class that needs a constructor argument with StructureMap
[英]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.