Exemplo n.º 1
0
        public static NyxBootHelper AndPlugins(this NyxBootHelper @this, string path, string ext = "*.dll")
        {
            Directory.CreateDirectory(path);
            var pluginAssemblies = Directory.EnumerateFiles(path, ext)
                                   //.Where(p => !p.ToLowerInvariant().Contains("nyx.core.dll"))
                                   .Select(Assembly.LoadFile)
                                   .ToArray();

            NyxBootHelper.Builder.RegisterAssemblyTypes(pluginAssemblies)
            .Where(t => t.IsSharedExtension())
            .AsImplementedInterfaces().SingleInstance().AsSelf().PropertiesAutowired(PropertyWiringOptions.AllowCircularDependencies);
            NyxBootHelper.Builder.RegisterAssemblyTypes(pluginAssemblies)
            .Where(t => t.IsNonSharedExtension())
            .AsImplementedInterfaces().InstancePerDependency().AsSelf().PropertiesAutowired(PropertyWiringOptions.AllowCircularDependencies);

            foreach (var module in pluginAssemblies.Select(assembly => assembly.GetTypes()
                                                           .Where(p => typeof(IModule).IsAssignableFrom(p) &&
                                                                  !p.IsAbstract)
                                                           .Select(p => (IModule)Activator.CreateInstance(p))).SelectMany(modules =>
            {
                var enumerable = modules as IModule[] ?? modules.ToArray();
                return(enumerable);
            }))
            {
                NyxBootHelper.Builder.RegisterModule(module);
            }
            return(NyxBootHelper);
        }
Exemplo n.º 2
0
 public static NyxBootHelper AndGeneric(this NyxBootHelper @this, Type type)
 {
     if (typeof(PluginManager) == type)
     {
         return(NyxBootHelper);
     }
     NyxBootHelper.Builder.RegisterGeneric(type).AsImplementedInterfaces().SingleInstance().PropertiesAutowired(PropertyWiringOptions.AllowCircularDependencies);
     return(NyxBootHelper);
 }
Exemplo n.º 3
0
 public static NyxBootHelper AndInstance(this NyxBootHelper @this, object obj)
 {
     if (obj is PluginManager)
     {
         return(NyxBootHelper);
     }
     NyxBootHelper.Builder.RegisterInstance(obj).AsImplementedInterfaces().SingleInstance();
     return(NyxBootHelper);
 }
Exemplo n.º 4
0
 public static void Start(this NyxBootHelper @this, Action <IContainer> postBuildCallback = null)
 {
     if (Container == null)
     {
         Container = NyxBootHelper.Builder.Build();
     }
     else
     {
         NyxBootHelper.Builder.Update(Container);
     }
     postBuildCallback?.Invoke(Container);
     // Bug: Double registration for some reason it calls the construtor again.
     //_container.Resolve<PluginManager>();
     //_container.Resolve<EvidenceManager>();
 }
Exemplo n.º 5
0
        public static NyxBootHelper With()
        {
            NyxBootHelper = new NyxBootHelper();
            NyxBootHelper.Builder.RegisterAssemblyTypes(Assembly.GetCallingAssembly())
            .Where(t => t.IsSharedExtension())
            .AsImplementedInterfaces().SingleInstance().AsSelf().PropertiesAutowired(PropertyWiringOptions.AllowCircularDependencies);
            NyxBootHelper.Builder.RegisterAssemblyTypes(Assembly.GetCallingAssembly())
            .Where(t => t.IsNonSharedExtension())
            .AsImplementedInterfaces().InstancePerDependency().AsSelf().PropertiesAutowired(PropertyWiringOptions.AllowCircularDependencies);

            var modules = Assembly.GetCallingAssembly().GetTypes()
                          .Where(p => typeof(IModule).IsAssignableFrom(p) &&
                                 !p.IsAbstract)
                          .Select(p => (IModule)Activator.CreateInstance(p));

            foreach (var module in modules)
            {
                NyxBootHelper.Builder.RegisterModule(module);
            }
            return(NyxBootHelper);
        }
Exemplo n.º 6
0
 public static NyxBootHelper AndModule(this NyxBootHelper @this, IModule module)
 {
     NyxBootHelper.Builder.RegisterModule(module);
     return(NyxBootHelper);
 }
Exemplo n.º 7
0
 public static NyxBootHelper NyxNode <T>(this NyxBootHelper @this) where T : INyxNode
 {
     NyxBootHelper.Builder.RegisterType <T>().AsImplementedInterfaces().SingleInstance().PropertiesAutowired(PropertyWiringOptions.AllowCircularDependencies);
     return(NyxBootHelper);
 }
Exemplo n.º 8
0
 public static NyxBootHelper NyxHub(this NyxBootHelper @this)
 {
     return(NyxBootHelper.NyxNode <NyxHub>());
 }