Я пытаюсь создать родительский объект (Policy) с двумя коллекциями дочерних объектов (ExpressionRules и ThresholdRules), в которых типы дочерних объектов совпадают и существуют в одной и той же таблице. Например:
class Policy
{
ICollection<Rule> ExpressionRules { get; set; }
ICollection<Rule> ThresholdRules { get; set; }
}
class Rule
{
public virtual int SequenceNumber { get; set; }
public virtual ICondition Condition { get; set; }
}
interface ICondition
{
}
class ExpressionCondition : ICondition
{
public virtual string Expression { get; set; }
}
class ThresholdCondition : ICondition
{
public virtual int Threshold { get; set; }
}
На практике каждый набор правил будет иметь в себе различные реализации ICondition. Отображения ICondition имеют дискриминаторы, в соответствии с которыми загружается правильная реализация. Но правила в этих двух наборах идентичны, и я хотел бы, чтобы они были сопоставлены с одной и той же таблицей.
Возможно ли это?
(Если вы добавляете примеры сопоставления, пожалуйста, используйте xml-сопоставления, если это возможно.)