我们有一个实体框架模型,其中包含名为QuoteStatus和SystemStatus的类,它们分别为报价和系统的状态建模。每个类都有一个导航属性,该属性是一个集合,其中包含状态更改时要通知的人员的电子邮件。该QuoteStatus类看起来像这样(简体)...如何提供一个通用的子属性
public class QuoteStatus {
public int ID { get; set; }
public string Name { get; set; }
public List<QuoteStatusNotification> QuoteStatusNotifications;
}
public class QuoteStatusNotification {
public int ID { get; set; }
public string Email { get; set; }
}
的SystemStatus和SystemStatusNotification类非常相似。
现在,我们希望有一个WPF窗口可用于维护这两种类型的状态(以及未来的更多情况)。这个想法是在窗口顶部有一个下拉控件,用户指定要显示的状态类型(报价或系统),并将值发送到视图模型。
视图模型将有私有变量的数据...
private List<QuoteStatus> _quoteStatuses;
private List<SystemStatus> _systemStatuses;
我们希望视图模型有一个公共财产以下状态,它可以绑定到视图上的网格。根据用户在下拉列表中选择的值,Statuses属性将包含_quoteStatuses集合或_systemStatuses集合。
我们通过创建一个基本状态类并让QuoteStatus和SystemStatus类从它继承来完成此操作。那很好。
我们遇到了儿童收藏问题。我们希望Status基类具有一个StatusNotifications集合,它将成为QuoteStatusNotification类或SystemStatusNotification类的集合。我们无法确定如何创建StatusNotifications集合。
从another thread here(请参阅接受的答案中的第二个建议),看起来我可能可以用协方差做到这一点,但是我不知道该怎么做。
任何人都可以解释这一点?
为什么相同的技术不适用于通知类?创建一个BaseNotification类,使QuoteStatusNotification和SystemStatusNotification继承并使基类的属性使用List。 –
Kevin