对非静态类属性进行分组

本文关键字:属性 静态类 | 更新日期: 2023-09-27 18:25:22

我正在编写一个.Net库,这是我的场景:我有一个"Manager"类,它包含一个"批次"列表。每个批次都有一个Status属性。

public class Batch
{
 public string Status { get { return batchActualStatusVar; } }
}

BatchManager有一个枚举器,其键等于可能的批处理状态。

public enum BatchStatus
{
 Completed = 64,
 Error = 32,
 InProgress = 4
 And so on.....
}

我在BatchManager中创建了属性,允许我根据状态划分批次,如下所示:

public List<Batch> BatchesCompleted { 
   get { 
   return Batches.Where(x => x.Status == BatchManager.BatchStatus.Completed.ToString()).ToList(); } }

问题我可以用哪种方式将属性分组为这样的结构:

BatchManager
    PropertiesGroup
           BatchesCompleted
           BatchesReady
           ....

我尝试在BatchManager类中使用一个结构,但问题是BatchManager中的"Batches"不是静态的,我无法从结构中访问它们。出于同样的原因,我不能使用其他类。

(这不是一个具体的问题,它只是一个例子,使问题易于理解)

提前感谢

对非静态类属性进行分组

创建一个BatchFilter类,该类由属性PropertiesGroup返回,并使用来自BatchManager 的信息构建

public class BatchFilter
{
    private List<Batch> _batches;
    public BatchFilter(List<Batch> batches)
    {
         _batches = batches;
    }
    public List<Batch> BatchesCompleted { 
   get { 
   return _batches.Where(x => x.Status == BatchManager.BatchStatus.Completed.ToString()).ToList(); } }
}
class BatchManager
{
    public BatchFilter PropertiesGroup { get { return new BatchQuery(Batches); }}
    // ...
}

如果您希望可以缓存它,请在批次更改时重置它,等等。