【发布时间】:2019-10-27 15:30:06
【问题描述】:
所以我正在尝试在调试输出中添加一些内容,并且我目前正在尝试动态获取类变量及其值。当我像这样在同一个类中添加代码时,我尝试了一些东西并让它运行得非常快:
var bindingFlags = BindingFlags.Instance |
BindingFlags.Static |
BindingFlags.NonPublic |
BindingFlags.Public;
Console.WriteLine("");
foreach (var variable in typeof(TestingStuff).GetFields(bindingFlags))
{
Debugger.Debug(Context.Player.GetUsername(), $"{variable.Name}: variable.GetValue(this)}");
}
Console.WriteLine("");
这会输出以下结果:
15:47:09 [Test1] _currentTarget:
15:47:09 [Test1] _currentlyPathing: False
15:47:09 [Test1] _moveToTest:
15:47:09 [Test1] _botName: Test_ZerGo01
这正是我想要的,但是当我尝试将这些东西传递给我的实际“调试器”输出时,我不能使用this,因为它是一个静态方法。我不知道应该用什么替换 this。
这是我的“调试器”方法:
public static void Error(string playerName, Exception ex, Type classType = null)
{
...
if (classType != null)
{
var bindingFlags = BindingFlags.Instance |
BindingFlags.Static |
BindingFlags.NonPublic |
BindingFlags.Public;
if (classType.GetFields(bindingFlags).Length > 1)
{
message += DebuggerLine("Plugin Class Variables") + nL;
foreach (var variable in classType.GetFields(bindingFlags))
{
message += DebuggerLine(variable.Name, variable.GetValue(???).ToString()) + nL;
}
}
message += DebuggerLine() + nL;
}
...
}
有人可以告诉我我是做什么的吗?
【问题讨论】:
标签: c# reflection getvalue