Exemplo n.º 1
0
 protected void Application_Start(object sender, EventArgs e)
 {
     DirectHttpHandler.SetMetadata(new ReflectionConfigurator()
                                   .SetNamespace("Sample.server")
                                   .RegisterType <DirectAction>());
     //DirectHttpHandler.SetMetadata(new LambdaConfigurator()
     //                                .SetNamespace("Sample.server")
     //                                .Register<DirectAction>("DirectAction.stringEcho", x => x.StringEcho(default(string)))
     //                                .Register<DirectAction>("DirectAction.numberEcho", x => x.NumberEcho(default(double)))
     //                                .Register<DirectAction>("DirectAction.boolEcho", x => x.BoolEcho(default(bool)))
     //                                .Register<DirectAction>("DirectAction.arrayEcho", x => x.ArrayEcho(default(int[])))
     //                                .Register<DirectAction>("DirectAction.objectEcho", x => x.ObjectEcho(default(DirectAction.ExampleClass)))
     //                                .Register<DirectAction>("DirectAction.jObjectEcho", x => x.JObjectEcho(default(JObject)))
     //                                .Register<DirectAction>("DirectAction.noParams", x => x.NoParams())
     //                                .Register<DirectAction>("DirectAction.exception", x => x.Exception())
     //                                .Register<DirectAction>("DirectAction.namedArguments", x => x.NamedArguments(default(string), default(double), default(bool)), namedArguments: true)
     //                                .Register<DirectAction>("DirectAction.submitFile", x => x.SubmitFile(default(string), default(Stream)), formHandler: true)
     //    );
 }
Exemplo n.º 2
0
        protected void Application_Start(object sender, EventArgs e)
        {
            //DirectHttpHandler.SetMetadata(new ReflectionConfigurator()
            //                                        .RegisterType<TestAction>()
            //                                        .RegisterType<Profile>());

            var c = new LambdaConfigurator();

            c.Register <TestAction>("TestAction.doEcho", x => x.DoEcho(default(string)));
            c.Register <TestAction>("TestAction.multiply", x => x.Multiply(default(double)));
            c.Register <TestAction>("TestAction.getGrid", x => x.GetGrid(default(TestAction.GetGridParams)));
            c.Register <TestAction>("TestAction.getTree", x => x.GetTree(default(string)));
            c.Register <TestAction>("TestAction.showDetails", x => x.ShowDetails(default(string), default(string), default(int)), namedArguments: true);
            c.Register <Profile>("Profile.getBasicInfo", x => x.GetBasicInfo(default(int), default(string)));
            c.Register <Profile>("Profile.getPhoneInfo", x => x.GetPhoneInfo(default(int)));
            c.Register <Profile>("Profile.getLocationInfo", x => x.GetLocationInfo(default(int)));
            c.Register <Profile>("Profile.updateBasicInfo", x => x.UpdateBasicInfo(default(string), default(string), default(string), default(string), default(string)), formHandler: true);
            DirectHttpHandler.SetMetadata(c);
        }
Exemplo n.º 3
0
        public static void FillContainer(IUnityContainer container, JsonSerializer jsonSerializer,
                                         IErrorHandler errorHandler)
        {
            container.RegisterInstance(container);
            container.RegisterInstance(jsonSerializer);
            container.RegisterInstance(errorHandler);

            container.RegisterType <HttpContextBase>(
                new InjectionFactory(c => new HttpContextWrapper(HttpContext.Current)));

            SystemServicesUnityConfigurator.Configure((UnityContainer)container);

            ConfigureAutoMapper();

            WithMetadata(
                (policies, entities, cardViewFieldBindings, listViewFieldBindings, lookupViewFieldBindings,
                 referenceFieldBindings) =>
            {
                var metamodel = new MetamodelBuilder(new PropertyAccessorFactory()).Build(entities);
                container.RegisterInstance <IMetamodel>(metamodel);

                var cfg     = GetDbConfiguration();
                var mapping = new WmsMappingBuilder().Build(entities).ToXmlDocument();
                cfg.AddDocument(mapping);

                container.RegisterType <ISessionFactory, SessionFactoryDecorator>(
                    new ContainerControlledLifetimeManager(),
                    new InjectionConstructor(
                        cfg.BuildSessionFactory()));

                container.RegisterType <ISession>(
                    new HierarchicalLifetimeManager(),
                    new InjectionFactory(u =>
                {
                    var factory = u.Resolve <ISessionFactory>();
                    return(factory.OpenSession());
                }));

                container.RegisterType <IQueryableFactoryProvider, NhQueryableFactoryProvider>();
                container.RegisterType <IUnitOfWorkFactory, NhUnitOfWorkFactory>();

                // ABAC
                container.RegisterType <IRootObjectNodeApplier, AbacRootObjectNodeApplier>();
                container.RegisterType <IEntitiesLoader, AbacEntitiesLoader>(new HierarchicalLifetimeManager());
                container.RegisterType <IAbacContext, Context>();
                container.RegisterInstance(typeof(IPolicyEnforcementService),
                                           GetPolicyEnforcementService(metamodel, policies));

                // UI meta
                var infoProvider = new UiInfoProviderBuilder().Build(metamodel, entities, cardViewFieldBindings,
                                                                     listViewFieldBindings, lookupViewFieldBindings, referenceFieldBindings);
                container.RegisterInstance <IUiInfoProvider>(infoProvider);

                // Validators
                var validatorProvider = new ValidatorsProviderBuilder().Build(entities);
                container.RegisterInstance <IValidatorsProvider>(validatorProvider);

                // Bindings
                container.RegisterType <IEntityBindingsProvider, EntityBindingsProvider>(
                    new ContainerControlledLifetimeManager(),
                    new InjectionConstructor(
                        typeof(IMetamodel),
                        typeof(INamingConventionProvider),
                        cardViewFieldBindings,
                        listViewFieldBindings,
                        lookupViewFieldBindings));
            });

            //WmsXmlConverter
            container.RegisterType <IWmsXmlConverter, WmsXmlConverter>(new ContainerControlledLifetimeManager());

            RegisterAppServices(container);

            InitServiceLocator(container);

            //Добавлен кастомный NamingConventionProvider
            var ncp = new DefaultNamingConventionProvider {
                ToCamelCase = false
            };

            container.RegisterInstance <INamingConventionProvider>(ncp);

            var section = (UnityConfigurationSection)ConfigurationManager.GetSection("unity");

            if (section != null)
            {
                container.LoadConfiguration(section);
            }

            DependencyResolver.SetResolver(new UnityDependencyResolver(container));

            var objectFactory = new DependencyResolverObjectFactory(DependencyResolver.Current, jsonSerializer,
                                                                    errorHandler);

            DirectHttpHandler.SetObjectFactory(objectFactory);

            RegisterKnownTypes();
        }