public static void Set <TItem, TOwner>(ref OwnedCollection <TItem, TOwner> field, Collection <TItem> value, TOwner owner) where TItem : class, IHasParent where TOwner : class { if (value != field) { field?.Clear(); if (value?.Count > 0) { var ta = GetOrCreate(ref field, owner); foreach (var v in value) { ta.Add(v); } } } }
public static OwnedCollection <TItem, TOwner> GetOrCreate <TItem, TOwner>(ref OwnedCollection <TItem, TOwner> field, TOwner owner) where TItem : class, IHasParent where TOwner : class => field ?? (field = new OwnedCollection <TItem, TOwner>(owner));