// Protected Methods (2) /// <summary> /// /// </summary> /// <see cref="ServiceLocatorBase.OnGetAllInstances(Type)" /> protected override IEnumerable <object> OnGetAllInstances(Type serviceType) { InstanceFactoryBase factory = null; this.InvokeForFactoryLists( (singleList, multiList, args) => { factory = multiList.FirstOrDefault(f => args.ServiceType .Equals(f.SERVICE_TYPE)); }, new { ServiceType = serviceType, }); IEnumerable <object> result = null; if (factory == null) { var innerLoc = this.InnerLocator; if (innerLoc != null) { result = innerLoc.GetAllInstances(serviceType); } } else { var seq = (IEnumerable)factory.DELEGATE .Method .Invoke(factory.DELEGATE .Target, new object[] { this }); if (seq != null) { result = seq as IEnumerable <object>; if (result == null) { result = seq.Cast <object>(); } } } return(result); }
/// <summary> /// /// </summary> /// <see cref="ServiceLocatorBase.OnGetInstance(Type, object)" /> protected override object OnGetInstance(Type serviceType, object key) { InstanceFactoryBase factory = null; this.InvokeForFactoryLists( (singleList, multiList, args) => { factory = singleList.FirstOrDefault(f => args.ServiceType .Equals(f.SERVICE_TYPE)); }, new { ServiceType = serviceType, }); object result = null; if (factory == null) { var innerLoc = this.InnerLocator; if (innerLoc != null) { result = innerLoc.GetInstance(serviceType, key); } } else { result = factory.DELEGATE .Method .Invoke(factory.DELEGATE .Target, new object[] { this, key }); } return(result); }