Exemple #1
0
 /// <summary>
 /// Initializes a new instance of the <see cref="TaskManager"/>
 /// </summary>
 /// <param name="taskRepository">A <see cref="ITaskRepository"/> to load / save <see cref="Task">tasks</see></param>
 /// <param name="taskScheduler">A <see cref="ITaskScheduler"/> for executing tasks and their operations</param>
 /// <param name="typeImporter">A <see cref="ITypeImporter"/> used for importing <see cref="ITaskStatusReporter"/></param>
 /// <param name="container">A <see cref="IContainer"/> to use for getting instances</param>
 public TaskManager(ITaskRepository taskRepository, ITaskScheduler taskScheduler, ITypeImporter typeImporter, IContainer container)
 {
     _taskRepository = taskRepository;
     _taskScheduler  = taskScheduler;
     _container      = container;
     _reporters      = typeImporter.ImportMany <ITaskStatusReporter>();
 }
Exemple #2
0
        public string Generate()
        {
            var typesByNamespace         = _typeDiscoverer.FindMultiple <ICommand>().Where(t => !_namespacesToExclude.Any(n => t.Namespace.StartsWith(n))).GroupBy(t => t.Namespace);
            var commandPropertyExtenders = _typeImporter.ImportMany <ICanExtendCommandProperty>();

            var result = new StringBuilder();

            Namespace currentNamespace;
            Namespace globalCommands = _codeGenerator.Namespace(Namespaces.COMMANDS);

            foreach (var @namespace in typesByNamespace)
            {
                if (_configuration.NamespaceMapper.CanResolveToClient(@namespace.Key))
                {
                    currentNamespace = _codeGenerator.Namespace(_configuration.NamespaceMapper.GetClientNamespaceFrom(@namespace.Key));
                }
                else
                {
                    currentNamespace = globalCommands;
                }

                foreach (var type in @namespace)
                {
                    if (type.IsGenericType)
                    {
                        continue;
                    }

                    var name = type.Name.ToCamelCase();
                    currentNamespace.Content.Assign(name)
                    .WithType(t =>
                              t.WithSuper("Bifrost.commands.Command")
                              .Function
                              .Body
                              .Variant("self", v => v.WithThis())
                              .Property("_name", p => p.WithString(name))
                              .Property("_generatedFrom", p => p.WithString(type.FullName))

                              .WithObservablePropertiesFrom(type, excludePropertiesFrom: typeof(ICommand), observableVisitor: (propertyName, observable) =>
                    {
                        foreach (var commandPropertyExtender in commandPropertyExtenders)
                        {
                            commandPropertyExtender.Extend(type, propertyName, observable);
                        }
                    }));
                }

                if (currentNamespace != globalCommands)
                {
                    result.Append(_codeGenerator.GenerateFrom(currentNamespace));
                }
            }
            result.Append(_codeGenerator.GenerateFrom(globalCommands));

            return(result.ToString());
        }
 private void Initialize()
 {
     _invokers = _importer.ImportMany <ICommandHandlerInvoker>();
 }