コード例 #1
0
        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));
            }
        }
コード例 #2
0
        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());
        }