除了PostSharp,在.NET中还有什么方法可以进行基于属性的日志记录吗

除了PostSharp,在.NET中还有什么方法可以进行基于属性的日志记录吗,.net,aop,postsharp,.net,Aop,Postsharp,在我的代码中,我需要类似于PostSharp的功能,比如由函数上的属性调用的onetry和onExit方法。同一件事还有其他选择吗 无法使用PostSharp,因为它不是开源的,并且我无法在我的项目中使用第三方库。我不知道有什么比PostSharp更强大的了 如果postsharp的免费版本不能满足您的需求,那么还有其他一些框架需要考虑,比如unity 然而,postsharp是透明的,unity aop则不是。它只适用于unity拦截的接口(并且以正确的方式拦截)。另外,如果我没记错的话,还

在我的代码中,我需要类似于PostSharp的功能,比如由函数上的属性调用的onetry和onExit方法。同一件事还有其他选择吗


无法使用PostSharp,因为它不是开源的,并且我无法在我的项目中使用第三方库。

我不知道有什么比PostSharp更强大的了

如果postsharp的免费版本不能满足您的需求,那么还有其他一些框架需要考虑,比如unity

然而,postsharp是透明的,unity aop则不是。它只适用于unity拦截的接口(并且以正确的方式拦截)。另外,如果我没记错的话,还有其他一些限制,比如如果我没记错的话,它不能很好地处理实体框架中跟踪的实体

另一种自由的方式是您可以编写linq扩展。它不是aop,但您可以编写如下代码

Linqhelper.log().cache().execute(some method)

也不像postsharp那样透明,但它可能适合您的需要

我不知道有什么比postsharp更强大的了

如果postsharp的免费版本不能满足您的需求,那么还有其他一些框架需要考虑,比如unity

然而,postsharp是透明的,unity aop则不是。它只适用于unity拦截的接口(并且以正确的方式拦截)。另外,如果我没记错的话,还有其他一些限制,比如如果我没记错的话,它不能很好地处理实体框架中跟踪的实体

另一种自由的方式是您可以编写linq扩展。它不是aop,但您可以编写如下代码

Linqhelper.log().cache().execute(some method)

也不像postsharp那样透明,但它可能适合您的需要

您可以使用MrAdvice.Sharp。 虽然PostSharp要好得多,但MrAdvice.Sharp是免费的,它满足您的需求。
用法与Postsharp几乎相同。

您可以使用MrAdvice.Sharp。 虽然PostSharp要好得多,但MrAdvice.Sharp是免费的,它满足您的需求。
Postsharp的用法几乎相同。

除了这看起来像是一个工具请求之外,如果有一个明显的工具用于此项工作,而您拒绝使用该工具,那么您可以给出避免使用该工具的具体原因,因为a)这些相同的原因也可能排除其他“明显”(但您不知道)的方法,b)这些原因实际上可能是基于您的误解。Postsharp的另一个替代方法是使用MethodDecorator Fody包。它的工作原理相同,您可以在github上找到它。如果你不想使用第三方代码,唯一的选择就是自己编写?@PatrickAllwood你能提供一个关于如何使用MethodDecorator Fody包的示例应用程序吗。我试着运行它,但自定义属性的onentry方法没有执行。除此之外,这看起来像是一个工具请求-如果有一个明显的工具用于该作业,而您拒绝使用该工具,那么您可以给出避免使用该工具的具体原因,因为a)这些相同的原因也可能排除其他“明显”的原因(但您不知道)方法,以及b)这些原因实际上可能基于您的误解。Postsharp的另一个替代方法是使用MethodDecorator Fody包。它的工作原理相同,您可以在github上找到它。如果你不想使用第三方代码,唯一的选择就是自己编写?@PatrickAllwood你能提供一个关于如何使用MethodDecorator Fody包的示例应用程序吗。我尝试运行它,但自定义属性的onentry方法没有执行。