He creado un Atributo, llamo a MyAttribute, que está realizando alguna seguridad y por alguna razón el Constructor no se está disparando, ¿por qué?Clase de atributo que no llama al constructor
public class Driver
{
// Entry point of the program
public static void Main(string[] Args)
{
Console.WriteLine(SayHello1("Hello to Me 1"));
Console.WriteLine(SayHello2("Hello to Me 2"));
Console.ReadLine();
}
[MyAttribute("hello")]
public static string SayHello1(string str)
{
return str;
}
[MyAttribute("Wrong Key, should fail")]
public static string SayHello2(string str)
{
return str;
}
}
[AttributeUsage(AttributeTargets.Method)]
public class MyAttribute : Attribute
{
public MyAttribute(string VRegKey)
{
if (VRegKey == "hello")
{
Console.WriteLine("Aha! You're Registered");
}
else
{
throw new Exception("Oho! You're not Registered");
};
}
}
Ahora puede obtener su código para lanzar una excepción. Pero, ¿eso le impide llamar al método en sí? –
Acepto que es incorrecto tener algún comportamiento en los Atributos. Pero la pregunta era por qué la excepción no ocurre en el código anterior y la respuesta es - porque la instancia de la clase de atributo se crea cuando intenta acceder a ella. –