tôi đã tạo ra một thuộc tính đơn giản:Tại sao thuộc tính .NET của tôi không thực hiện một hành động?
[AttributeUsage(AttributeTargets.Method)]
public class InitAttribute : System.Attribute
{
public InitAttribute()
{
Console.WriteLine("Works!");
}
}
và tôi áp dụng nó vào một phương pháp đơn giản:
static class Logger
{
public static string _severity;
public static void Init(string severity)
{
_severity = severity;
}
[Init()]
public static void p()
{
Console.WriteLine(_severity);
}
}
gì đang xảy ra là khá streight-forward. Chỉ, tôi mong đợi thuộc tính để thực hiện một hành động (in ấn tác phẩm!), Nhưng điều này không xảy ra.
Nghiện, in "Hoạt động!" dĩ nhiên chỉ dành cho mục đích gỡ lỗi: Tôi muốn truy cập vào tài sản của dụ_severity
(để kiểm tra xem có! = null chẳng hạn), nhưng mọi thứ tôi vẫn đọc về các thuộc tính (khá mới đối với tôi) là về cách truy cập các phương pháp hoặc thuộc tính của lớp ' và cứ thế thông qua phản ánh. Khi tôi đã đánh giá _severity
, làm thế nào tôi có thể sửa đổi hành vi của phương pháp được trang trí (trong trường hợp này, tăng một ngoại lệ "Logger không được khởi tạo" và không thực hiện nó)?
Bất kỳ trợ giúp nào được đánh giá cao.
Một điều khiến người dùng đặt câu hỏi này là cách mà các khung công tác như ASP.Net MVC thêm các móc vào các thuộc tính trong những thứ như ActionFilterAttribute, để chúng xuất hiện để làm điều gì đó. Điều này khuyến khích mọi người cố gắng để có được các thuộc tính bình thường để chủ động hơn. –