如何创建嵌套 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;
}
如果我有一个内部嵌套模型的模型。如何根据 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;
}