/// <summary> /// Constructor /// </summary> /// <param name="ServiceDependencyType"><see cref="AppBlocksServiceDependencyType"/> type. Service can be /// <see cref="AppBlocksServiceDependencyType.Live"/> or <see cref="AppBlocksServiceDependencyType.NonLive"/></param> /// <param name="Name">Service name</param> /// <param name="ServiceType">Type implemented</param> /// <param name="ServiceScope"><see cref="AppBlocksInstanceLifetime"/> lifetime scope</param> /// <param name="Interceptors">Service interceptors</param> /// <param name="Workflows">Type workflow writers</param> /// <param name="IsKeyed"><c>true</c> if service is keyed; otherwise <c>false</c></param> public AppBlocksServiceAttribute( AppBlocksServiceDependencyType ServiceDependencyType = AppBlocksServiceDependencyType.NonLive, string Name = "", Type ServiceType = null, AppBlocksInstanceLifetime ServiceScope = AppBlocksInstanceLifetime.InstancePerLifetimeScope, string[] Interceptors = null, string[] Workflows = null, bool IsKeyed = false) : base(ServiceDependencyType, ServiceScope) { this.Name = Name; this.ServiceType = ServiceType; this.Interceptors = Interceptors ?? new[] { AppBlocksInterceptorConstants.Logging, AppBlocksInterceptorConstants.Validation }; this.Workflows = Workflows; this.IsKeyed = IsKeyed; //Keyed services must define service type if (IsKeyed && ServiceType == null) { throw new ArgumentException("Keyed services must define service type"); } }
/// <summary> /// Constructor /// </summary> /// <param name="Name">Service</param> /// <param name="ServiceType">Type implemented</param> /// <param name="ServiceScope"><see cref="AppBlocksInstanceLifetime"/> lifetime scope</param> /// <param name="Interceptors">Service interceptors</param> /// <param name="Workflows">Type workflow writers</param> /// <param name="IsKeyed">Service is keyed</param> public AppBlocksLiveServiceAttribute( string Name = "", Type ServiceType = null, AppBlocksInstanceLifetime ServiceScope = AppBlocksInstanceLifetime.InstancePerLifetimeScope, string[] Interceptors = null, string[] Workflows = null, bool IsKeyed = false) : base(AppBlocksServiceDependencyType.Live, Name, ServiceType, ServiceScope, Interceptors, Workflows, IsKeyed) { }
/// <summary> /// Constructor /// </summary> /// <param name="Name">Service name</param> /// <param name="ServiceDependencyType"><see cref="AppBlocksServiceDependencyType"/> type. Service can be /// <see cref="AppBlocksServiceDependencyType.Live"/> or <see cref="AppBlocksServiceDependencyType.NonLive"/></param> /// <param name="ServiceType">Type implemented</param> /// <param name="ServiceScope"><see cref="AppBlocksInstanceLifetime"/> lifetime scope</param> /// <param name="Interceptors">Service interceptors</param> /// <param name="Workflows">Type workflow writers</param> public AppBlocksNamedServiceAttribute( string Name, AppBlocksServiceDependencyType ServiceDependencyType = AppBlocksServiceDependencyType.NonLive, Type ServiceType = null, AppBlocksInstanceLifetime ServiceScope = AppBlocksInstanceLifetime.InstancePerLifetimeScope, string[] Interceptors = null, string[] Workflows = null) : base( ServiceDependencyType, Name, ServiceType, ServiceScope, Interceptors, Workflows, false) { }
/// <summary> /// Constructor /// </summary> /// <param name="ServiceDependencyType"><see cref="AppBlocksServiceDependencyType"/> type. Service can be /// <see cref="AppBlocksServiceDependencyType.Live"/> or <see cref="AppBlocksServiceDependencyType.NonLive"/></param> /// <param name="ServiceScope"><see cref="AppBlocksInstanceLifetime"/> lifetime scope</param> public AppBlocksServiceBaseAttribute(AppBlocksServiceDependencyType ServiceDependencyType, AppBlocksInstanceLifetime ServiceScope) { this.ServiceDependencyType = ServiceDependencyType; this.ServiceScope = ServiceScope; }