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

时间:2009-11-16 16:30:47

标签: c# generics exception

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

  

测试方法抛出异常:   System.MissingMethodException:方法   找不到:'System.String   DataUtilities.HelperMethods.Serialize(!! 0)” ..

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

被称为方法的签名:

public static string Serialize<T>(T value)

该方法位于引用的dll中。

我注意到以下内容:在引用的dll中,有一个方法将调用包装到Serialize(T值)方法。

它的代码是:

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 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

确定。老实说,我现在还不知道是什么让它变得怪异,但它现在正在运行。

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

然后重建所有。

现在可行。

之前,我已经对所有关注的程序集做过了。显然这还不够。