Почему мой метод шаблона C # жалуется на принятие определенного типа? - PullRequest
1 голос
/ 30 сентября 2010

Я погружаюсь в ASP.NET MVC 2, прохожу учебник и получаю сообщение об ошибке, связанной с шаблонным методом в моих модульных тестах. Ошибочный код ...

var displayedProducts = (IList<Product>)result.ViewData.Model;
displayedProducts.Count.ShouldEqual(2);

, а определение метода для ShouldEqual - это ...

public static void ShouldEqual<T>(this T actualValue, T expectedValue)
{
   Assert.AreEqual(expectedValue, actualValue);
}

и ошибка ...

'int' does not contain a definition for 'ShouldEqual' and no extension method 'ShouldEqual' accepting a first argument of type 'int' could be found (are you missing a using directive or an assembly reference?)

но поскольку я так новичок во всем этом, я не вижу, чего мне не хватало.

  1. Кто-нибудь видит проблему?
  2. Может кто-нибудь объяснить мне, как ShouldEqual является функцией-членом Count

Большое спасибо за вашу помощь! Если вам нужно больше кода, пожалуйста, дайте мне знать.

Ответы [ 2 ]

1 голос
/ 30 сентября 2010

Я понимаю это ... это из книги Стива Сандерсона?

Я могу воспроизвести эту ошибку, если закомментирую оператор using для пространства имен, где объявлено ShouldEqual.

В файле, где у вас есть

var displayedProducts = (IList<Product>)result.ViewData.Model;
displayedProducts.Count.ShouldEqual(2);

, вы можете проверить и убедиться, что у вас есть оператор using для пространства имен, в котором ShouldEqual находится?

1 голос
/ 30 сентября 2010

ShouldEqual - только трюк с компилятором.Это отдельная функция (статический класс (CLASSNAME) и метод).Компилятор заменяет вызов на ...

CLASSNAME.ShouldEqual<int>(displayedProducts.Count, 2);

Подробнее см. Здесь : http://msdn.microsoft.com/en-us/library/bb383977.aspx

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