public IEnumerable <IEventSubscriber <T> > GetSubscriptions <T>() { var result = new List <IEventSubscriber <T> >(); string typeFullName = typeof(T).FullName; var subscribers = _cache.GetValue <IEnumerable <Type> >(typeFullName, null); if (subscribers == null) { subscribers = (from assembly in _eventSubscriberAssembliesProvider.GetEventSubscriberAssemblies() from t in assembly.GetImplementationsOf(typeof(IEventSubscriber <>), typeof(T)) select t).ToList(); if (subscribers.Any()) { _cache.SetValue <IEnumerable <Type> >(typeFullName, subscribers); } } foreach (var subscriberType in subscribers) { result.Add(ServiceLocator.Current.GetInstance(subscriberType) as IEventSubscriber <T>); } return(result); }
protected virtual List <Type> GetSubscribers <T>() { return((from assembly in _eventSubscriberAssembliesProvider.GetEventSubscriberAssemblies() from t in assembly.GetImplementationsOf(typeof(IEventSubscriber <>), typeof(T)) select t).ToList()); }