private IEnumerable<LifestyleDependency> GetMismatch(LifestyleDependency parent, ComponentModel component, ComponentsMap model2Meta) { if (parent.Handler.ComponentModel == component) { yield break; } var pair = model2Meta[component]; var handler = pair.Handler; var item = new LifestyleDependency(pair, parent); if (item.Mismatched()) { yield return item; } else { foreach (ComponentModel dependent in handler.ComponentModel.Dependents) { foreach (var mismatch in GetMismatch(item, dependent, model2Meta)) { yield return mismatch; } } } }
private IEnumerable<LifestyleDependency> GetMismatch(LifestyleDependency parent, ComponentModel component, Dictionary<ComponentModel, IHandler> model2Handler) { if (parent.Handler.ComponentModel == component) { yield break; } var handler = model2Handler[component]; var item = new LifestyleDependency(handler, parent); if (item.Mismatched()) { yield return item; } else { foreach (ComponentModel dependent in handler.ComponentModel.Dependents) { foreach (var mismatch in GetMismatch(item, dependent, model2Handler)) { yield return mismatch; } } } }