Exemple #1
0
            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);
                })));
            }
        }