我只想创建一个从 Attribute 类继承的类,以便在我的项目中的每个方法中放置属性标签,以编写方法名称、具有此方法的类名称、调用日期和时间、参数和方法的返回(如果它返回一些东西) )。
我在 SQL Server 中创建一个表,它将接收所有日志信息并对其进行签名..
我已经完成了与我的数据库交互的所有方法和查询(日期和时间方法除外),唯一的问题是我不知道如何使用 Attribute 方式来获取我提到的信息。
我只想创建一个从 Attribute 类继承的类,以便在我的项目中的每个方法中放置属性标签,以编写方法名称、具有此方法的类名称、调用日期和时间、参数和方法的返回(如果它返回一些东西) )。
我在 SQL Server 中创建一个表,它将接收所有日志信息并对其进行签名..
我已经完成了与我的数据库交互的所有方法和查询(日期和时间方法除外),唯一的问题是我不知道如何使用 Attribute 方式来获取我提到的信息。
如果您想使用属性进行日志记录,您可以使用 PostSharp 在编译代码期间修改 IL,并将您的日志记录代码放在您放置从 PostSharp 的属性(方面)(AOP)派生的自定义属性的方法之前/之后。
我认为您不能仅通过使用自定义属性来做到这一点,因为据我所知,自定义属性仅在Type.GetCustomAttributes()
被调用时才会被实例化。因此,您可能需要做一些反射业务来通过我不推荐的属性发送日志。
除了属性,您可以通过第三方工具简单地使用AOP 。您可以使用Castle Dynamic Proxy的拦截器。
您还可以使用 Castle Windsor 中的 Interception 来记录属性。
为此,您创建一个继承自 的类IInterceptor
,将其注册到您的容器中,然后您可以将属性添加到您想要添加日志记录行为的任何类或方法。
我在这里写了一个解释:http: //www.paulsodimu.co.uk/Post/Aspect-Oriented-Programming-Using-Castle-Windsor
我在 GitHub 上创建了一个示例来展示它是如何完成的: https ://github.com/PaulSodimu/LoggingAopCastle