Example #1
0
        private void GatherServicesAndInvokeBeforeWriteScriptsCallbacks(IScriptManagerService scriptManager, Dictionary <Type, object> services)
        {
            var allCreatedObjects = _createdObjects;

            while (_createdObjects.Count > 0)
            {
                var current = _createdObjects;
                _createdObjects = new HashSet <Tuple <object, Type> >();
                foreach (var o in current.Select(x => x.Item1).OfType <IBeforeWriteScriptsCallback>())
                {
                    o.BeforeWriteScripts(scriptManager);
                }
                var newServices = GatherServices(current.Select(o => o.Item1), services);
                foreach (var o in newServices.OfType <IBeforeWriteScriptsCallback>())
                {
                    o.BeforeWriteScripts(scriptManager);
                }

                foreach (var o in _createdObjects)                      // This iteration might have caused new types to be created. In that case, add them to the set and continue the loop.
                {
                    allCreatedObjects.Add(o);
                }
            }
            _createdObjects = allCreatedObjects;
        }
Example #2
0
        public void ApplyToScriptManager(IScriptManagerService scriptManager)
        {
            var services = new Dictionary <Type, object>();

            GatherServicesAndInvokeBeforeWriteScriptsCallbacks(scriptManager, services);
            foreach (var asm in         _createdObjects.Select(o => o.Item1.GetType().Assembly)
                     .Concat(services.Values.Select(o => o.GetType().Assembly))
                     .Concat(_registeredClientUsableTypes.Select(t => t.Assembly))
                     .Distinct())
            {
                scriptManager.RegisterClientAssembly(asm);
            }

            foreach (var svc in services.Concat(_createdObjects.Where(t => t.Item2 != null)
                                                .Select(t => new KeyValuePair <Type, object>(t.Item2, t.Item1)))
                     .Where(svc => !scriptManager.IsClientServiceRegistered(svc.Key))
                     .Distinct())
            {
                scriptManager.RegisterClientService(svc.Key, svc.Value);
            }
        }
		public DefaultLesson7Provider(IContainer container, IScriptManagerService scriptManager, IRouteService routes)
		{
			_container = container;
			_scriptManager = scriptManager;
			_routes = routes;
		}
Example #4
0
 public DefaultLesson7Provider(IContainer container, IScriptManagerService scriptManager, IRouteService routes)
 {
     _container     = container;
     _scriptManager = scriptManager;
     _routes        = routes;
 }