我創建了一個簡單的屬性:爲什麼我的.NET屬性不執行操作?
[AttributeUsage(AttributeTargets.Method)]
public class InitAttribute : System.Attribute
{
public InitAttribute()
{
Console.WriteLine("Works!");
}
}
,我把它應用到一個簡單的方法:
static class Logger
{
public static string _severity;
public static void Init(string severity)
{
_severity = severity;
}
[Init()]
public static void p()
{
Console.WriteLine(_severity);
}
}
這是怎麼回事是相當streight進。只是,我期望該屬性執行一個操作(打印Works!),但這不會發生。
成癮地打印「Works!」當然這只是爲了調試目的:我想訪問實例的屬性_severity
(例如,檢查是否= null),但是我一直在閱讀有關屬性的所有內容(這對我而言是非常新的)是關於通過反射訪問類'方法或屬性等。一旦我評估了_severity
,我如何修改裝飾方法的行爲(在這種情況下,引發異常「記錄器未初始化」並且不執行它)?
任何幫助表示讚賞。
引起用戶提出這個問題的一件事就是像ASP.Net MVC這樣的框架爲像ActionFilterAttribute這樣的屬性添加鉤子,以便它們看起來可以做某些事情。這鼓勵人們試圖讓正常的屬性變得更加主動。 – 2009-07-24 09:27:02