反射没有得到正确的值(它可能是一个.NET框架错误吗?)

时间:2016-01-22 14:32:39

标签: c# .net debugging reflection watch

我对一个反思有一个非常奇怪的问题。 当我尝试获取包含对象列表的字段的值时,我得到list.Count == 0。当我在调试期间在监视窗口中检查这些值时,之后我得到具有相同Reflection方法的list.Count > 0。 检查之间没有多线程(线程ID是相同的)并且没有执行任何操作,这将清除并重新填充列表。我无法重现干净(测试)项目的问题。 我出于兼容性原因使用.NET framework 4.0以及代码中的以下逻辑:

Type t = cmd.GetType();
FieldInfo[] fi = t.GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance);
object[] o1 = null;
if (fi != null)
{
    o1 = new object[fi.Length];
    for (int i = 0; i < o1.Length; i++)
    {
        o1[i] = fi[i].GetValue(cmd);
    }
}

我想知道是否有人有类似的问题,可以分享可能出错的想法,也许有解决方法如何解决。说实话,我可以看到调试信息与程序实际执行的不一致的情况。例如,一旦我遇到调试工具显示结果trueif子句跳过该行的情况,因为它会产生false结果。

0 个答案:

没有答案