0

我只想创建一个从 Attribute 类继承的类,以便在我的项目中的每个方法中放置属性标签,以编写方法名称、具有此方法的类名称、调用日期和时间、参数和方法的返回(如果它返回一些东西) )。

我在 SQL Server 中创建一个表,它将接收所有日志信息并对其进行签名..

我已经完成了与我的数据库交互的所有方法和查询(日期和时间方法除外),唯一的问题是我不知道如何使用 Attribute 方式来获取我提到的信息。

4

2 回答 2

0

如果您想使用属性进行日志记录,您可以使用 PostSharp 在编译代码期间修改 IL,并将您的日志记录代码放在您放置从 PostSharp 的属性(方面)(AOP)派生的自定义属性的方法之前/之后。

我认为您不能仅通过使用自定义属性来做到这一点,因为据我所知,自定义属性仅在Type.GetCustomAttributes()被调用时才会被实例化。因此,您可能需要做一些反射业务来通过我不推荐的属性发送日志。

除了属性,您可以通过第三方工具简单地使用AOP 。您可以使用Castle Dynamic Proxy的拦截器。

于 2013-11-12T07:42:30.523 回答
0

您还可以使用 Castle Windsor 中的 Interception 来记录属性。

为此,您创建一个继承自 的类IInterceptor,将其注册到您的容器中,然后您可以将属性添加到您想要添加日志记录行为的任何类或方法。

我在这里写了一个解释:http: //www.paulsodimu.co.uk/Post/Aspect-Oriented-Programming-Using-Castle-Windsor

我在 GitHub 上创建了一个示例来展示它是如何完成的: https ://github.com/PaulSodimu/LoggingAopCastle

于 2014-06-03T16:16:18.993 回答