public InitializableManager( [InjectOptional] List <IInitializable> initializables, [InjectOptional] List <Tuple <Type, int> > priorities, DiContainer container, SingletonInstanceHelper singletonInstanceHelper) { _singletonInstanceHelper = singletonInstanceHelper; if (Assert.IsEnabled) { WarnForMissingBindings(initializables, container); } foreach (var initializable in initializables) { // Note that we use zero for unspecified priority // This is nice because you can use negative or positive for before/after unspecified var matches = priorities.Where(x => initializable.GetType().DerivesFromOrEqual(x.First)).Select(x => x.Second).ToList(); int priority = matches.IsEmpty() ? 0 : matches.Single(); _initializables.Add(new InitializableInfo(initializable, priority)); } }
public DisposableManager( [InjectOptional] List <IDisposable> disposables, [InjectOptional] List <Tuple <Type, int> > priorities, SingletonInstanceHelper singletonInstanceHelper) { _singletonInstanceHelper = singletonInstanceHelper; foreach (var disposable in disposables) { // Note that we use zero for unspecified priority // This is nice because you can use negative or positive for before/after unspecified var matches = priorities.Where(x => disposable.GetType().DerivesFromOrEqual(x.First)).Select(x => x.Second).ToList(); int priority = matches.IsEmpty() ? 0 : matches.Single(); _disposables.Add(new DisposableInfo(disposable, priority)); } Log.Debug("Loaded {0} IDisposables to DisposablesHandler", _disposables.Count()); }