代码之家  ›  专栏  ›  技术社区  ›  StampedeXV

在C中调用泛型方法时MissingMemberException#

  •  0
  • StampedeXV  · 技术社区  · 15 年前

    运行UnitTest时,我收到以下异常:

    测试方法引发异常: System.MissingMethodException:方法 未找到:“system.string” datautilities.helpermethods.serialize(!!0)…

    这只在运行UnitTest时发生,而不是在调试它时发生。当我调试它时,不会发生错误。

    被调用方法的签名:

    public static string Serialize<T>(T value)
    

    该方法位于引用的dll中。

    我注意到以下情况:在引用的dll中,有一个方法包装对serialize(t value)方法的调用。

    它的代码是:

    public static string SerializeList(List<object> list)
    {
        TraceClass.Write("something",list);
        string x = HelperClass.Serialize<List<object>>(list);
        TraceClass.Write(x);
        return x;
    }
    

    如果我使用这个“间接”调用helperclass.serialize,它就可以正常工作。在调试和正常运行模式下。

    我做错什么了?

    2 回复  |  直到 15 年前
        1
  •  1
  •   Joseph    15 年前

    在运行单元测试时,我会检查以确保没有从其他位置引用dll。您很可能有一个旧的dll文件放在测试运行程序正在查找的某个地方,这就是您得到该错误的原因。

        2
  •  0
  •   StampedeXV    15 年前

    好啊。我真的不知道是什么让它现在起作用,但它现在正在运行。

    我删除了所有直接引用项目的所有bin和object文件夹。用于创建测试所需文件夹结构的所有中间文件夹。 所有旧的测试结果文件夹。

    然后全部重建。

    现在它起作用了。

    以前,我对所有有关的集会都这样做了。显然这是不够的。