que he estado haciendo algunas pruebas con el código siguiente para tratar de entrenamiento de cómo funcionan ActionFilterAttributes:¿Los ActionFilterAttributes se reutilizan en los subprocesos? ¿Cómo funciona?
public class TestAttribute : ActionFilterAttribute
{
private string _privateValue;
public string PublicValue { get; set; }
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
_privateValue = DateTime.Now.ToString();
base.OnActionExecuting(filterContext);
}
}
Cuando ejecuto el código anterior en dos hilos paralelos al campo _privateValue se confunde. Sin embargo, la propiedad PublicValue no se confunde.
Me parece que los ActionFilterAttributes se reutilizan en subprocesos, pero que las nuevas instancias se crean dependiendo de las constantes especificadas para las propiedades públicas. ¿Estoy en lo correcto?
¿Dónde puedo encontrar información sobre esto?
¿Qué pasa con las propiedades públicas de un filtro de acción (p. ej., propiedad Duración de salida de caché)? Supongo que se crea una nueva instancia si la propiedad es diferente. – cbp
@cbp, ¿qué hay de ellos? No asumas nada sobre la vida útil de un filtro de acción. Como se cita en las notas de la versión, esto no es algo en lo que deba confiar. –
Bien, pero ¿cómo puede OutputCache (que es un filtro de acción) tener propiedades públicas como Duration, CacheProfile, VaryByCustom, etc.? – cbp