none
Crear instancia por cada petición (IoC) RRS feed

  • Pregunta

  • Buenas,

    Tengo la siguiente clase:

    [AttributeUsage(AttributeTargets.Property, Inherited = false, AllowMultiple = true)]
    public class CustomMinStringLengthAttribute : ValidationAttribute, IClientValidatable
    {
    	public int MinLength { get; set; }
    
    	private readonly ICredentialsPolicyAppService confInicialAppService;
    
    	public CustomMinStringLengthAttribute()
    	{
    		confInicialAppService = DependencyResolver.Current.GetService<ICredentialsPolicyAppService>();
    
    		int minLength = confInicialAppService.ListAll().FirstOrDefault().RequiredLength;
    
    		MinLength = minLength;
    	}
    	
    	// ...
    }

    Quisiera que se ejecute el constructor en cada nuevo request, tal como ocurre con otras clases del repositorio de datos. Las clases del repositorio están configuradas de la siguiente manera en el contenedor IoC (SimpleInjector):

    container.Register<ICredentialsPolicyRepository>(() => new CredentialsPolicyRepository(container.GetInstance<IdentityContext>()), Lifestyle.Scoped);
    

    De esta manera, el constructor de la clase CredentialsPolicyRepository se ejecuta en cada request.

    Mientras que las siguiente configuraciones no ejecutan el constructor en cada request.

    container.Register<ICredentialsPolicyService, CredentialsPolicyService>(Lifestyle.Scoped);
    container.Register<ICredentialsPolicyAppService, CredentialsPolicyAppService>(Lifestyle.Scoped);
    

    He configurado la clase CustomMinStringLengthAttribute de la siguiente manera en el contenedor:

    container.Register(() => new CredentialsPolicy(), Lifestyle.Scoped);
    

    Pero sigue sin ejecutarse con cada request.

    Por favor si me orientan, muchas gracias, saludos.

    domingo, 24 de febrero de 2019 20:40