基本上我试图在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