public DisposableManager( [InjectOptional(InjectSources.Local)] List<IDisposable> disposables, [InjectOptional(InjectSources.Local)] List<ModestTree.Util.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()); }
public InitializableManager( [InjectLocalOptional] List<IInitializable> initializables, [InjectLocalOptional] List<ModestTree.Util.Tuple<Type, int>> priorities, DiContainer container, SingletonInstanceHelper singletonInstanceHelper) { _singletonInstanceHelper = singletonInstanceHelper; 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)); } }