示例#1
0
 public override void BeforeTemplateExecution()
 {
     ExecutionContext.EventDispatcher.Publish(ContainerRegistrationRequest.ToRegister(this)
                                              .ForInterface(GetTemplate <IClassProvider>(DomainEventServiceInterfaceTemplate.TemplateId))
                                              .ForConcern("Infrastructure")
                                              .WithPerServiceCallLifeTime());
 }
 public override void BeforeTemplateExecution()
 {
     base.BeforeTemplateExecution();
     ExecutionContext.EventDispatcher.Publish(ContainerRegistrationRequest.ToRegister(this)
                                              .ForConcern("Application")
                                              .ForInterface(GetTemplate <IClassProvider>(ServiceContractTemplate.TemplateId, Model)));
 }
 public override void BeforeTemplateExecution()
 {
     ExecutionContext.EventDispatcher.Publish(ContainerRegistrationRequest.ToRegister($"typeof({ClassName}<,>)")
                                              .ForInterface("typeof(IPipelineBehavior<,>)")
                                              .WithPriority(4)
                                              .ForConcern("Application")
                                              .RequiresUsingNamespaces("MediatR")
                                              .HasDependency(this));
 }
 private void Handle(ContainerRegistrationRequest @event)
 {
     _registrations.Add(@event);
     //_registrations.Add(new ContainerRegistration(
     //    interfaceType: @event.TryGetValue(ContainerRegistrationEvent.InterfaceTypeKey),
     //    concreteType: @event.GetValue(ContainerRegistrationEvent.ConcreteTypeKey),
     //    lifetime: @event.TryGetValue(ContainerRegistrationEvent.LifetimeKey),
     //    interfaceTypeTemplateDependency: @event.TryGetValue(ContainerRegistrationEvent.InterfaceTypeTemplateIdKey) != null ? TemplateDependency.OnTemplate(@event.TryGetValue(ContainerRegistrationEvent.InterfaceTypeTemplateIdKey)) : null,
     //    concreteTypeTemplateDependency: @event.TryGetValue(ContainerRegistrationEvent.ConcreteTypeTemplateIdKey) != null ? TemplateDependency.OnTemplate(@event.TryGetValue(ContainerRegistrationEvent.ConcreteTypeTemplateIdKey)) : null));
 }
        public override void BeforeTemplateExecution()
        {
            ExecutionContext.EventDispatcher.Publish(new ConnectionStringRegistrationRequest(
                                                         name: $"{Project.Application.Name}DB",
                                                         connectionString: $"Server=.;Initial Catalog={ OutputTarget.Application.Name };Integrated Security=true;MultipleActiveResultSets=True",
                                                         providerName: "System.Data.SqlClient"));

            ExecutionContext.EventDispatcher.Publish(ContainerRegistrationRequest.ToRegister(this)
                                                     .WithPerServiceCallLifeTime());
        }
示例#6
0
 private string DefineServiceRegistration(ContainerRegistrationRequest x)
 {
     if (x.ConcreteType.StartsWith("typeof("))
     {
         return(x.InterfaceType != null
             ? $"services.{RegistrationType(x)}({(x.InterfaceType)}, {(x.ConcreteType)});"
             : $"services.{RegistrationType(x)}({(x.ConcreteType)});");
     }
     return(x.InterfaceType != null
         ? $"services.{RegistrationType(x)}<{NormalizeNamespace(x.InterfaceType)}, {NormalizeNamespace(x.ConcreteType)}>();"
         : $"services.{RegistrationType(x)}<{NormalizeNamespace(x.ConcreteType)}>();");
 }
示例#7
0
 public override void BeforeTemplateExecution()
 {
     ExecutionContext.EventDispatcher.Publish(ContainerRegistrationRequest.ToRegister(this)
                                              .WithPerServiceCallLifeTime());
     //Project.Application.EventDispatcher.Publish(ContainerRegistrationEvent.EventId, new Dictionary<string, string>()
     //{
     //    { ContainerRegistrationEvent.InterfaceTypeKey, null},
     //    { ContainerRegistrationEvent.ConcreteTypeKey, $"{Namespace}.{ClassName}" },
     //    { ContainerRegistrationEvent.InterfaceTypeTemplateIdKey, null },
     //    { ContainerRegistrationEvent.ConcreteTypeTemplateIdKey, Identifier },
     //    { ContainerRegistrationEvent.LifetimeKey, ContainerRegistrationEvent.PerServiceCallLifetime }
     //});
 }
示例#8
0
        private void HandleEvent(ContainerRegistrationRequest @event)
        {
            if (@event.Concern != "Application")
            {
                return;
            }

            @event.MarkAsHandled();
            _registrationRequests.Add(@event);
            foreach (var templateDependency in @event.TemplateDependencies)
            {
                AddTemplateDependency(templateDependency);
            }
        }
        private string GetLifetimeManager(ContainerRegistrationRequest registration)
        {
            switch (registration.Lifetime)
            {
            case ContainerRegistrationRequest.LifeTime.Singleton:
                return(".SingleInstance()");

            case ContainerRegistrationRequest.LifeTime.PerServiceCall:
                return(".InstancePerRequest()");

            case ContainerRegistrationRequest.LifeTime.Transient:
                return(string.Empty);

            default:
                return(string.Empty);
            }
        }
示例#10
0
        private string GetLifetimeManager(ContainerRegistrationRequest registration)
        {
            switch (registration.Lifetime)
            {
            case ContainerRegistrationRequest.LifeTime.Singleton:
                return("new ContainerControlledLifetimeManager()");

            case ContainerRegistrationRequest.LifeTime.PerServiceCall:
                return($"new {Project.Application.FindTemplateInstance<IClassProvider>(TemplateDependency.OnTemplate(PerServiceCallLifetimeManagerTemplate.Identifier)).ClassName}()");

            case ContainerRegistrationRequest.LifeTime.Transient:
                return(string.Empty);

            default:
                return(string.Empty);
            }
        }
示例#11
0
        private string RegistrationType(ContainerRegistrationRequest registration)
        {
            switch (registration.Lifetime)
            {
            case ContainerRegistrationRequest.LifeTime.Singleton:
                return("AddSingleton");

            case ContainerRegistrationRequest.LifeTime.PerServiceCall:
                return("AddScoped");

            case ContainerRegistrationRequest.LifeTime.Transient:
                return("AddTransient");

            default:
                return("AddTransient");
            }
        }
        public override void BeforeTemplateExecution()
        {
            var contractTemplate = Project.FindTemplateInstance <IClassProvider>(_repositoryInterfaceTemplateDependency);

            if (contractTemplate == null)
            {
                return;
            }

            ExecutionContext.EventDispatcher.Publish(ContainerRegistrationRequest.ToRegister(this)
                                                     .ForConcern("Infrastructure")
                                                     .ForInterface(contractTemplate));
            //Project.Application.EventDispatcher.Publish(ContainerRegistrationEvent.EventId, new Dictionary<string, string>()
            //{
            //    { "InterfaceType", $"{contractTemplate.Namespace}.{contractTemplate.ClassName}"},
            //    { "ConcreteType", $"{Namespace}.{ClassName}" },
            //    { "InterfaceTypeTemplateId", _repositoryInterfaceTemplateDependency.TemplateId },
            //    { "ConcreteTypeTemplateId", Identifier }
            //});
        }
示例#13
0
        public override void BeforeTemplateExecution()
        {
            ExecutionContext.EventDispatcher.Publish(ContainerRegistrationRequest.ToRegister(this).ForInterface("Intent.Framework.Core.Context.IContextBackingStore"));
            //Project.Application.EventDispatcher.Publish(ContainerRegistrationEvent.EventId, new Dictionary<string, string>()
            //{
            //    { "InterfaceType", "Intent.Framework.Core.Context.IContextBackingStore"},
            //    { "ConcreteType", $"{Namespace}.{ClassName}" }
            //});

            Project.Application.EventDispatcher.Publish(InitializationRequiredEvent.EventId, new Dictionary <string, string>()
            {
                { InitializationRequiredEvent.UsingsKey, $@"Intent.Framework.Core.Context;
{Namespace};" },
                { InitializationRequiredEvent.CallKey, "InitializeServiceCallContext();" },
                { InitializationRequiredEvent.MethodKey, $@"
        private void InitializeServiceCallContext()
        {{
            ServiceCallContext.SetBackingStore(new {ClassName}());
        }}" }
            });
        }
 private string GetRegistrationString(ContainerRegistrationRequest x)
 {
     return(x.InterfaceType != null
         ? $"{Environment.NewLine}            builder.RegisterType<{NormalizeNamespace(x.ConcreteType)}>().As<{NormalizeNamespace(x.InterfaceType)}>(){GetLifetimeManager(x)};"
         : $"{Environment.NewLine}            builder.RegisterType<{NormalizeNamespace(x.ConcreteType)}>(){GetLifetimeManager(x)};");
 }
示例#15
0
 private void Handle(ContainerRegistrationRequest @event)
 {
     _registrations.Add(@event);
 }
 public override void BeforeTemplateExecution()
 {
     ExecutionContext.EventDispatcher.Publish(ContainerRegistrationRequest.ToRegister(this)
                                              .ForInterface("IServiceProvider"));
 }
示例#17
0
 public override void BeforeTemplateExecution()
 {
     ExecutionContext.EventDispatcher.Publish(ContainerRegistrationRequest.ToRegister(this)
                                              .ForConcern("Application")
                                              );
 }