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); }
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); }
public static NyxBootHelper AndInstance(this NyxBootHelper @this, object obj) { if (obj is PluginManager) { return(NyxBootHelper); } NyxBootHelper.Builder.RegisterInstance(obj).AsImplementedInterfaces().SingleInstance(); return(NyxBootHelper); }
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>(); }
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); }
public static NyxBootHelper AndModule(this NyxBootHelper @this, IModule module) { NyxBootHelper.Builder.RegisterModule(module); return(NyxBootHelper); }
public static NyxBootHelper NyxNode <T>(this NyxBootHelper @this) where T : INyxNode { NyxBootHelper.Builder.RegisterType <T>().AsImplementedInterfaces().SingleInstance().PropertiesAutowired(PropertyWiringOptions.AllowCircularDependencies); return(NyxBootHelper); }
public static NyxBootHelper NyxHub(this NyxBootHelper @this) { return(NyxBootHelper.NyxNode <NyxHub>()); }