对非静态类属性进行分组
本文关键字:属性 静态类 | 更新日期: 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); }}
// ...
}
如果您希望可以缓存它,请在批次更改时重置它,等等。