如何创建嵌套 class 列表,其中每个嵌套 class 的某个 属性 为真?

How can I create list of nested classes where a certain property of each nested class is true?

如果我有一个内部嵌套模型的模型。如何根据 NotificationModel 设置名称 属性 和基于嵌套模型中的属性的列表 return?

我假设使用 Linq 和反射。

所以我有类似的东西:(假设警报已初始化,以及它们是否已从数据库中启用)。

public class AlarmController : IAlarmController
{
    public AlarmController()
    {        
        this.NotificationModel = new NotificationModel();
    }
    
    public NotificationModel NotificationModel { get; set; }
    
    public List<AlarmModel> GetAlarmModels()
    {
     //this.NotificationModel --something... where isEnabled == true.

     return new List<AlarmModel>();
    }
}       

public class NotificationModel
{
        public AlarmModel HardwareFault{ get; set; }

        public AlarmModel TimeoutFault { get; set; }

        public AlarmModel GenericFault { get; set; }
}

public class AlarmModel
{
    public string Name { get; set; }

    public bool isActive { get; set; }

    public bool isEnabled { get; set; }

    public bool isSilenced { get; set; }
}

我进行了一些反思,但还没有找到像我这样的例子。我没有发布,因为我认为这会混淆问题。如果这不是正确的方法,请指出。

如果我正确理解了您的要求,您希望在 GetAlarmModels 中过滤 属性 NotificationModel。然后你可以使用以下方法:

public List<AlarmModel> GetAlarmModels() => EnabledAlarms().ToList();

private IEnumerable<AlarmModel> EnabledAlarms()
{
    if(NotificationModel.HardwareFault.isEnabled)
        yield return NotificationModel.HardwareFault;
    if(NotificationModel.TimeoutFault.isEnabled)
        yield return NotificationModel.TimeoutFault;
    if(NotificationModel.GenericFault.isEnabled)
        yield return NotificationModel.GenericFault;
}