private static IList GetList(this RelatedEntities related, string collection) { if (!_getters.TryGetValue(collection, out Func <RelatedEntities, IList> getter)) { throw new ArgumentException($"The collection {collection} does not exist on {nameof(RelatedEntities)}."); } else { return(getter(related)); } }
public static IEnumerable <EntityWithKey> GetEntities(this RelatedEntities relatedEntities, string collection) { var list = relatedEntities.GetList(collection); if (list != null) { foreach (var item in list) { yield return(item as EntityWithKey); } } }
public static void AddEntity(this RelatedEntities relatedEntities, EntityWithKey entity) { if (entity == null) { return; } var type = entity.GetType(); var desc = TypeDescriptor.Get(type); var collection = type.Name; var list = relatedEntities.GetList(collection); if (list == null) { list = desc.CreateList(); relatedEntities.SetList(collection, list); } list.Add(entity); }
private static void SetList(this RelatedEntities related, string name, IList list) { var propInfo = typeof(RelatedEntities).GetProperty(name); propInfo.SetValue(related, list); }