MissingMemberException при вызове универсального метода в C # - PullRequest
0 голосов
/ 16 ноября 2009

При проведении юнит-теста я получаю следующее исключение:

Метод испытания сгенерировал исключение: 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 ]

1 голос
/ 16 ноября 2009

Я бы проверил, чтобы dll не ссылалась из какого-то другого места, когда вы запускаете свои юнит-тесты. Скорее всего, у вас где-то сидит старый файл dll, который обнаруживает тестирующий, и именно поэтому вы получаете эту ошибку.

0 голосов
/ 16 ноября 2009

Хорошо. Честно говоря, я действительно не знаю, что заставило его усугубиться сейчас, но сейчас оно работает.

Я удалил все папки bin и object из всех проектов, на которые есть прямые ссылки. Все промежуточные папки, используемые для создания структуры папок, необходимой для теста. Все старые папки Testresult.

Затем перестройте все.

Теперь это работает.

Раньше я уже делал это со всеми соответствующими сборками. Очевидно, этого было недостаточно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...