我已經創建了一個屬性,調用MyAttribute,這是執行一些安全性和由於某些原因,構造函數沒有被開除,有什麼理由?屬性類不調用構造函數
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");
};
}
}
所以現在你可以讓你的代碼拋出異常。但這是否阻止你調用方法本身? – 2010-03-18 19:05:42
我同意在屬性中有任何行爲是錯誤的。但問題是,爲什麼異常不會在上面的代碼發生,答案是 - 因爲當你試圖訪問創建它的屬性類的實例。 – 2010-03-18 19:21:57