繁体   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