public void RegisterLateInitializable(ILateInitializable lateInitializable) { if (_lateInitializables.Contains(lateInitializable)) { return; } _lateInitializables.Add(lateInitializable); }
public InitializableManager([Inject(Optional = true, Source = InjectSources.Local)] List <IInitializable> initializables, [Inject(Optional = true, Source = InjectSources.Local)] List <ValuePair <Type, int> > priorities, [Inject(Optional = true, Source = InjectSources.Local)] List <ILateInitializable> lateInitializables, [Inject(Id = "Late", Optional = true, Source = InjectSources.Local)] List <ValuePair <Type, int> > latePriorities) { this.initializables = new List <InitializableInfo>(initializables.Count); this.lateInitializables = new List <LateInitializableInfo>(lateInitializables.Count); for (var i = 0; i < initializables.Count; i++) { IInitializable initializable = initializables[i]; // Note that we use zero for unspecified priority // This is nice because you can use negative or positive for before/after unspecified List <int> matches = priorities.Where(x => initializable.GetType().DerivesFromOrEqual(x.First)) .Select(x => x.Second) .ToList(); int priority = matches.IsEmpty() ? 0 : matches.Distinct().Single(); this.initializables.Add(new InitializableInfo(initializable, priority)); } for (var i = 0; i < lateInitializables.Count; i++) { ILateInitializable lateInitializable = lateInitializables[i]; // Note that we use zero for unspecified priority // This is nice because you can use negative or positive for before/after unspecified List <int> matches = latePriorities.Where(x => lateInitializable.GetType().DerivesFromOrEqual(x.First)) .Select(x => x.Second) .ToList(); int priority = matches.IsEmpty() ? 0 : matches.Distinct().Single(); this.lateInitializables.Add(new LateInitializableInfo(lateInitializable, priority)); } }
private void AddLateInitializable(ILateInitializable obj) { _lateInitializables.Add(obj); }
public LateInitializableInfo(ILateInitializable lateInitializable, int priority) { LateInitializable = lateInitializable; Priority = priority; }
public void AddLate(ILateInitializable initializable, int priority) { lateInitializables.Add(new LateInitializableInfo(initializable, priority)); }
public void AddLate(ILateInitializable initializable) { AddLate(initializable, 0); }
public LateInitializableInfo(ILateInitializable lateInitializable, int priority) { this.lateInitializable = lateInitializable; this.priority = priority; }