gpt4 book ai didi

c# - 添加日志记录或需要在每个函数中出现的方法的更好方法?

转载 作者:行者123 更新时间:2023-11-30 21:45:50 25 4
gpt4 key购买 nike

有没有更好的方法来记录或添加对一系列函数的方法调用,而无需显式添加函数调用?

例如我有一个这样的类:

public class MyClass
{

public void DoStuff()
{
doSomethingEnter();

//MyCode

doSomethingExit();
}

public void DoStuff_2()
{
doSomethingEnter();

//MyCode

doSomethingExit();
}
}

doSomethingEnter() 和 doSomethingExit() 可以记录调用或调用函数开始和结束时需要发生的其他事情的事件。

我读过面向方面的编程,它允许我做这样的事情:

public class MyClass
{

[DoSomethingEnterExit]
public void DoStuff()
{
//MyCode
}
}

但是有没有一种模式或框架可以让我做类似的事情而不必购买像 PostSharp 这样的 AOP 框架?

谢谢。

编辑

我也考虑过做一些外观,以确保总是使用具有入口和导出功能的主方法调用东西。

public class MyFacade
{
public void MasterMethod(string methodName)
{
doSomethingEnter();
if(methodName == "DoStuff")
{
MyClass.DoStuff();
}
else
{
MyClass.DoStuff_2();
}
doSomethingExit();
}
}

最佳答案

使用 AOP(面向切面编程)在编译时透明地将日志记录注入(inject)您的代码。

PostSharp 是 .Net 的 AOP 库,它使用反射属性允许您在代码中放置标记(方面),然后预编译器定位这些标记并用实际代码替换它们。

Disclosure: I'm not affiliated with PostSharp, but have used it before in some of my projects.

编辑:

  • 据我所知,还有一个免费和开源的 PostSharp 版本可以用于日志记录场景。

  • 我还没有听说过 .Net 生态系统中的其他 AOP 库。

关于c# - 添加日志记录或需要在每个函数中出现的方法的更好方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39820010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com