public ReadWriteParent(string fixedName, int variable, SharedReadOnlyChild sharedChild, ReadOnlyChild child, IEnumerable <ReadOnlyChild> children) { FixedName = fixedName; Variable = variable; SharedChild = sharedChild; Child = child; ChildrenList = children.ToList(); }
protected override ReadOnlyParent Immutify(ReadWriteParent mutable, ImmutableSupport support) { IParent source = mutable ?? (IParent)this; int variable = source.Variable; SharedReadOnlyChild sharedChild = support.Immutify <SharedReadOnlyChild, SharedWriteableChild>(SharedChild); ReadOnlyChild child = support.Immutify <ReadOnlyChild, ReadWriteChild>(Child); IEnumerable <ReadOnlyChild> children = support.Immutify <ReadOnlyChild, ReadWriteChild>(Children); // TODO: Equals für die Collections? ... gehört womöglich in Extensions! return(Equals(variable, Variable) && Equals(sharedChild, SharedChild) && Equals(child, Child) && Equals(children, Children) ? this : new ReadOnlyParent(FixedName, variable, sharedChild, child, children)); }