Tôi đã tạo một Thuộc tính, gọi MyAttribute, đang thực hiện một số bảo mật và vì một lý do nào đó mà Constructor không bị sa thải, bất kỳ lý do gì?Lớp thuộc tính không gọi hàm tạo
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");
};
}
}
Vì vậy, bây giờ bạn có thể nhận được mã của bạn để ném một ngoại lệ. Nhưng điều đó có ngăn cản bạn gọi chính phương thức đó không? –
Tôi đồng ý rằng không có bất kỳ hành vi nào trong Thuộc tính. Nhưng câu hỏi đặt ra là tại sao ngoại lệ không xảy ra trong đoạn mã trên và câu trả lời là - bởi vì cá thể của lớp thuộc tính được tạo ra khi bạn cố truy cập nó. –