public static IEnumerable <ZenjectResolveException> ValidateObjectGraph( DiContainer container, Type concreteType, params Type[] extras) { using (container.PushLookup(concreteType)) { var dependencies = InjectablesFinder.GetAllInjectables(concreteType); var extrasList = extras.ToList(); foreach (var dependInfo in dependencies) { Assert.IsEqual(dependInfo.EnclosingType, concreteType); if (TryTakingFromExtras(dependInfo.ContractType, extrasList)) { continue; } var context = new ResolveContext( dependInfo, container.LookupsInProgress.ToList(), null); foreach (var error in ValidateContract( container, dependInfo.ContractType, context, dependInfo.Optional)) { yield return(error); } } if (!extrasList.IsEmpty()) { yield return(new ZenjectResolveException( "Found unnecessary extra parameters passed when injecting into '{0}' with types '{1}'. \nObject graph:\n{2}" .With(concreteType.Name(), String.Join(",", extrasList.Select(x => x.Name()).ToArray()), container.GetCurrentObjectGraph()))); } } }
public IEnumerable <Type> GetDependencyContracts(Type contract) { Assert.That(!_hasDisposed); foreach (var injectMember in InjectablesFinder.GetAllInjectables(contract, false)) { yield return(injectMember.ContractType); } }