J'ai créé un attribut, appelez MyAttribute, qui effectue une certaine sécurité et, pour une raison quelconque, le constructeur n'est pas renvoyé, pourquoi?Classe d'attribut n'appelant pas le constructeur
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");
};
}
}
Alors maintenant vous pouvez obtenir votre code pour lancer une exception. Mais cela vous empêche-t-il d'appeler la méthode elle-même? –
Je suis d'accord qu'il est faux d'avoir un comportement dans les attributs. Mais la question était pourquoi l'exception ne se produit pas dans le code ci-dessus et la réponse est - parce que l'instance de la classe d'attribut est créée lorsque vous essayez d'y accéder. –