/// <summary> /// Inicializa una nueva instancia de la clase <see cref="ServiceLocator" /> /// </summary> /// <param name="nonceGenerator">Instancia de <see cref="INonceGenerator" /> que se utiliza para inicializar el proveedor de valores nonce o <c>null</c> para utilizar la instancia predeterminada.</param> /// <param name="epochGenerator">Instancia de <see cref="IEpochGenerator" /> que se utiliza para inicializar el proveedor de valores epoch o <c>null</c> para utilizar la instancia predeterminada.</param> /// <param name="headersManager">Instancia de <see cref="IHeadersManager" /> que se utiliza para inicializar el proveedor de cabeceras para las solicitudes al servicio o <c>null</c> para utilizar la instancia predeterminada.</param> /// <param name="requestHeaderNames">Instancia de <see cref="IHeaderElement" /> que se utiliza para inicializar el proveedor de los nombres de cabeceras personalizadas o <c>null</c> para utilizar la instancia predeterminada.</param> /// <param name="payloadClaimNames">Instancia de <see cref="IPayloadClaimElement" /> que se utiliza para inicializar el proveedor de los nombres para las reclamaciones usadas en la carga útil del servicio o <c>null</c> para utilizar la instancia predeterminada.</param> /// <param name="payloadClaimsManager">Instancia de <see cref="IPayloadClaimsManager" /> que se utiliza para inicializar el proveedor de reclamaciones de la carga útil o <c>null</c> para utilizar la instancia predeterminada.</param> /// <param name="jwtJsonSerializer">Instancia de <see cref="IJsonSerializer" /> que se utiliza para inicializar el proveedor de serialización y deserialización de JWT o <c>null</c> para utilizar la instancia predeterminada.</param> /// <param name="webProxy">Instancia de <see cref="IWebProxy" /> que se utiliza para inicializar el proveedor del servidor proxy o <c>null</c> para utilizar la instancia predeterminada.</param> /// <param name="loggingProvider">Instancia de <see cref="ILoggingProvider" /> que se utiliza para inicializar el proveedor de escritura de trazas de seguimiento o <c>null</c> para utilizar la instancia predeterminada.</param> /// <param name="endpointProvider">Instancia que implementa <see cref="IEndpointProvider"/> para la obtención de valores de configuración.</param> /// <param name="appIdentity">Instancia que implementa <see cref="IAppIdentity"/> para la obtención de valores de configuración.</param> private void RegisterInstance( INonceGenerator nonceGenerator = null, IEpochGenerator epochGenerator = null, IHeadersManager headersManager = null, IHeaderElement requestHeaderNames = null, IPayloadClaimElement payloadClaimNames = null, IPayloadClaimsManager payloadClaimsManager = null, IJsonSerializer jwtJsonSerializer = null, IWebProxy webProxy = null, ILoggingProvider loggingProvider = null, IEndpointProvider endpointProvider = null, IAppIdentity appIdentity = null) { lock (padlock) { INonceGenerator instanceOfNonceGenerator = nonceGenerator ?? this.NonceGenerator ?? new GuidNonceGenerator(); IEpochGenerator instanceOfEpochGenerator = epochGenerator ?? this.EpochGenerator ?? new UnixEpochGenerator(); IHeaderElement instanceOfRequestHeaderNames = requestHeaderNames ?? this.RequestHeaderNames ?? new DefaultHeaderElement(); IPayloadClaimElement instanceOfPayloadClaimNames = payloadClaimNames ?? this.PayloadClaimNames ?? new DefaultPayloadClaimElement(); IPayloadClaimsManager instanceOfPayloadClaimsManager = payloadClaimsManager ?? this.PayloadClaimsManager ?? new DefaultPayloadClaimsManager(); IHeadersManager instanceOfHeadersManager = headersManager ?? this.HeadersManager ?? new DefaultHeadersManager(); IJsonSerializer instanceOfJwtJsonSerializer = jwtJsonSerializer ?? this.JwtJsonSerializer ?? new JsonNetSerializer(); IWebProxy instanceOfWebProxy = webProxy ?? this.WebProxy ?? new NullWebProxy(); ILoggingProvider instanceOfLoggingProvider = loggingProvider ?? this.LoggingProvider ?? new NullLoggingProvider(); IEndpointProvider instanceOfEndpointProvider = endpointProvider ?? new EnvironmentEndpoint(); IAppIdentity instanceOfAppIdentity = appIdentity ?? new EnvironmentIdentity(); if (this.container != null) { this.container.Dispose(); this.container = null; } this.container = new Container(); this.container.RegisterInstance <IEnvironmentRuntime>(new EnvironmentRuntime()); this.container.RegisterInstance(instanceOfNonceGenerator); this.container.RegisterInstance(instanceOfEpochGenerator); this.container.RegisterInstance(instanceOfRequestHeaderNames); this.container.RegisterInstance(instanceOfHeadersManager); this.container.RegisterInstance(instanceOfPayloadClaimNames); this.container.RegisterInstance(instanceOfPayloadClaimsManager); this.container.RegisterInstance(instanceOfJwtJsonSerializer); this.container.RegisterInstance(instanceOfWebProxy); this.container.RegisterInstance(instanceOfLoggingProvider); this.container.RegisterInstance(instanceOfEndpointProvider); this.container.RegisterInstance(instanceOfAppIdentity); } }
/// <summary> /// Registra una instancia de <see cref="IPayloadClaimElement" /> que define los nombres que se utilizan para las reclamaciones usadas en la carga útil de una solicitud al servicio Aspen. /// </summary> /// <param name="payloadClaimNames">Instancia que implementa <see cref="IHeaderElement" />.</param> public void RegisterPayloadClaimNames(IPayloadClaimElement payloadClaimNames) { Throw.IfNull(payloadClaimNames, nameof(payloadClaimNames)); this.RegisterInstance(payloadClaimNames: payloadClaimNames); }