private static void ConfigureDefaultNLog() { dynamic logManager = new StaticMembersDynamicWrapper(Type.GetType("NLog.LogManager, NLog")); if (logManager.Configuration != null) return; dynamic config = Activator.CreateInstance("NLog", "NLog.Config.LoggingConfiguration").Unwrap(); dynamic target = Activator.CreateInstance("NLog", "NLog.Targets.ColoredConsoleTarget").Unwrap(); dynamic loggingRule = Activator.CreateInstance("NLog", "NLog.Config.LoggingRule").Unwrap(); target.Layout = "[${level:uppercase=true:padding=-5}] ${logger}: ${message}${onexception:inner=${newline}${exception:format=tostring}}"; config.AddTarget("console", target); dynamic logLevel = new StaticMembersDynamicWrapper(Type.GetType("NLog.LogLevel, NLog")); loggingRule.LoggerNamePattern = "*"; loggingRule.Targets.Add(target); #if DEBUG int i = 1; // DEBUG Level #else int i = 2; // INFO Level #endif for (; i < 6; i++) { var level = logLevel.FromOrdinal(i); loggingRule.EnableLoggingForLevel(level); } config.LoggingRules.Add(loggingRule); logManager.Configuration = config; }
private void SetupDefaults(IEnumerable<Type> typesToRegister, IEnumerable<Type> viewModelTypesToRegister) { dynamic registrationExtensions = new StaticMembersDynamicWrapper(Type.GetType("Autofac.RegistrationExtensions, Autofac")); dynamic resolutionExtensions = new StaticMembersDynamicWrapper(Type.GetType("Autofac.ResolutionExtensions, Autofac")); dynamic registration; Type limitType; foreach (var type in typesToRegister) { // IoC.RegisterType(type) registration = new AutofacRegistrationHelper(registrationExtensions.RegisterType(ZAppRunner.Default.IoC, type)); // AsSelf() limitType = registration.ActivatorData.Activator.LimitType; registration.As(limitType); } foreach (var type in viewModelTypesToRegister) { // IoC.RegisterType(type) registration = new AutofacRegistrationHelper(registrationExtensions.RegisterType(ZAppRunner.Default.IoC, type)); // AsSelf() limitType = registration.ActivatorData.Activator.LimitType; registration.As(limitType); // Add attachments on activation registration.OnActivating((Action<dynamic>)(e => { var vmType = (Type)e.Instance.GetType(); var attachments = ZAppRunner.ConventionManager.FindAll(ZAppRunner.Default.AttachmentConvention, vmType) .Where(t => resolutionExtensions.IsRegistered(e.Context, t)) .Select(t => (IAttachment)resolutionExtensions.Resolve(e.Context, t)); foreach (var a in attachments) a.AttachTo(e.Instance); })); } // IoC.RegisterType(typeof(WindowManager)) registration = new AutofacRegistrationHelper(registrationExtensions.RegisterType(ZAppRunner.Default.IoC, typeof(WindowManager))); // AsImplementedInterfaces() limitType = registration.ActivatorData.Activator.LimitType; var interfaces = limitType.GetInterfaces().Where((Func<Type, bool>)(t => t != typeof(IDisposable))).ToArray(); registration = new AutofacRegistrationHelper(registration.As(interfaces)); // SingleInstance() registration.SingleInstance(); }
public void Setup(IEnumerable<Type> typesToRegister, IEnumerable<Type> viewModelTypesToRegister) { dynamic component = new StaticMembersDynamicWrapper(Type.GetType("Castle.MicroKernel.Registration.Component, Castle.Windsor")); foreach (var item in typesToRegister) container.Register(component.For(item)); foreach (var item in viewModelTypesToRegister) { dynamic registration = new WindsorComponentRegistrationHelper(component.For(item)); container.Register(registration.OnCreate((LifecycleActionDelegate<object>)((kernel, instance) => { var vmType = (Type)instance.GetType(); var attachments = ZAppRunner.ConventionManager.FindAll(ZAppRunner.Default.AttachmentConvention, vmType) .Where(t => kernel.HasComponent(t)) .Select(t => (IAttachment)kernel.Resolve(t)); foreach (var a in attachments) a.AttachTo(instance); }))); } }