public void SetParentSubset(IColumnSubsetInfo <T> parent) { if (GetParentSubset() != null) { throw new Exception($"Subset {this} already has a parent subset."); } _parent = parent; // when assigning a parent, remove all columns inherited from this parent, so a 'derived' object contains only its own columns _columns = _columns.Except(parent.GetColumns()).ToList(); }
public override string ToString() { //return $"ID={GetId()}, Parent={(_parent!=null ? String.Join(",", _parent?.GetColumns()) : null)}, Columns={String.Join(",", _columns)}"; //let's output subsets with their hierarcy var str = $"({String.Join(",", GetColumns())})"; for (IColumnSubsetInfo <T> subset = this; subset.GetParentSubset() != null; subset = subset.GetParentSubset()) { str += $" -> ({String.Join(",", subset.GetParentSubset().GetColumns())})"; } return(str); }