基本上我試圖在C#中實現某種窮人的面向方面編程。我曾考慮過使用ContextAttribute,但他們似乎只能在課堂上進行綁定。有沒有什麼辦法可以將一個屬性放在一個屬性中,以便它可以接收與它所註釋的方法相同的參數,或者以某種方式訪問它所觸發的上下文?在C#中獲得屬性上下文
我有這樣的代碼
public void AddUser(User user)
{
var errors = DataAnnotationsValidationRunner.GetErrors(user);
if (errors.Any())
throw new RulesException(errors);
users.Add(user);
}
從中我想提取的第3行,所以我有這樣的事情
[Validated]
public void AddUser(User user)
{
users.Add(user);
}
+1適用於PostSharp – 2009-08-20 21:27:35
這是完美的,我沒有意識到有一個C#方面的編織器在某處讀取了它是不可能的。我想postsharp從http://zombo.com出來,那裏不可能是可能的。 – stimms 2009-08-21 04:03:19
只是FYI,看看Postsharp附帶的插件。我知道log4postsharp(它與log4net和postsharp結婚)是以Log []屬性的形式出現的,它將記錄入口/出口到一個方法(包括反射所有傳入的參數(及其值!))。你可以重寫那些代碼來做任何你想要的驗證。它肯定會爲你節省一些時間... – 2009-08-21 22:06:14