gpt4 book ai didi

c# - 获取方法中的参数名称(并用作字典键?)

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

我正在编写一个要集成到现有软件中的审计日志系统,数据库结构包括一个字段,用于存储有关正在记录的操作的详细信息。不必花哨;它不会被太多需要,当需要时,在大多数情况下,开发人员会读取它以找出调用了哪个方法以及调用了哪些参数,诸如此类。这意味着虽然它应该是人类可读的,但它不需要被任何东西解析。因此,与其大量重载或使用可怕的 switch case 字符串替换,我想出了一种编写详细信息 blob 的好方法,即通过日志记录调用来获取正在记录的操作所需的参数名称和值传给他们的。我做了一些研究,并在反射方法中发现了一些有前途的东西,但我还没有找到任何可以清楚地解释如何去做的东西。

这是我所追求的粗略模拟:

Dictionary<string,string> parameters = new Dictionary<string,string>();
foreach (Parameter p in MethodCall)
{
parameters.Add(p.Name, p.Value.ToString());
}

LogEvent(EventType.Something, userID = thisUser, details = parameters);

我知道它可能比实践中的更复杂,但它为您提供了总体思路。在我的 LogEvent 方法中,有一些东西可以添加时间戳,为用户端日志查看器构造描述性句子(比我们向管理员和开发人员展示的技术细节要少,以免暴露我们的程序/数据库结构)以及 - 理论上 - 构建来自参数详细信息字典的某种 blob(可能是 JSON 或类似的)。

最佳答案

相关的是:Obtain parameter values from a stack frame in .NET?其中有一些有用的答案。

您想记录方法名称和参数列表。方法名称使用 StackFrame 很容易,但我认为您不能使用简单的反射来获取参数值。

关于c# - 获取方法中的参数名称(并用作字典键?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13251560/

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