/// <summary> /// Captures the current child entities of this instance for the given member. /// </summary> internal static void CaptureMetaMemberChilds(this MetaEntity meta, IUberMember member) { var entity = meta.Entity; if (member.DependencyMode == MemberDependencyMode.Child && member.ElementInfo.CanRead && member.ElementInfo.ElementType.IsListAlike()) { var type = member.ElementInfo.ElementType.ListAlikeMemberType(); if (type != null && (type.IsClass || type.IsInterface)) { HashSet <object> portion = null; if (!meta.ChildDependencies.TryGetValue(member.Name, out portion)) { meta.ChildDependencies.Add(member.Name, (portion = new HashSet <object>())); } portion.Clear(); if (meta.UberMap.Repository.TrackChildEntities) { var iter = member.ElementInfo.GetValue(entity) as IEnumerable; foreach (var obj in iter) { if (obj != null) { portion.Add(obj); } } } } } }
/// <summary> /// Captures the current child entities of this instance for the given member. /// </summary> internal static void CaptureMetaMemberChilds(this MetaEntity meta, IUberMember member) { var entity = meta.Entity; if (member.DependencyMode == MemberDependencyMode.Child && member.ElementInfo.CanRead && member.ElementInfo.ElementType.IsListAlike()) { var type = member.ElementInfo.ElementType.ListAlikeMemberType(); if (type != null && (type.IsClass || type.IsInterface)) { HashSet<object> portion = null; if (!meta.ChildDependencies.TryGetValue(member.Name, out portion)) meta.ChildDependencies.Add(member.Name, (portion = new HashSet<object>())); portion.Clear(); if (meta.UberMap.Repository.TrackChildEntities) { var iter = member.ElementInfo.GetValue(entity) as IEnumerable; foreach (var obj in iter) if (obj != null) portion.Add(obj); } } } }