al escribir un atributo personalizado en C# me preguntaba si hay alguna guía o mejores prácticas con respecto a las excepciones en los atributos. ¿Debería el atributo verificar los parámetros dados para la validez? ¿O es esta la tarea del usuario de la propiedad?Atributos y excepciones personalizados en .net
En una prueba simple que hice la excepción no se lanzó hasta que usé GetCustomAttributes en un tipo con un atributo de lanzamiento de excepción. Creo que es un poco incómodo obtener una excepción de un Atributo solo cuando se solicitan explícitamente.
Ejemplo atributo con excepción:
[AttributeUsage(AttributeTargets.Interface, AllowMultiple = false, Inherited = false)]
sealed public class MyAttribute : Attribute
{
public string SomeValue { get; private set; }
public MyAttribute(string someValue)
{
if(string.IsNullOrEmpty(someValue))
{
throw new ArgumentNullException("path");
}
if(!someOtherCheck(someValue))
{
throw MyAttributeException("An other error occured");
}
SomeValue = someValue;
}
}