Пытаясь написать свой первый универсальный класс на C #:
public class HighScoreList<ScoreType>
where ScoreType : System.IComparable<ScoreType>
{
...
public HighScoreList(List<ScoreType> highScoreList)
{
....
}
...
}
Я столкнулся с проблемами при написании для него модульных тестов.По какой-то причине он не может соответствовать списку аргументов конструктора и выдает ошибку:
Ошибка 7 Наилучшее совпадение перегруженного метода для 'TDGLX.FileManagement.HighScoreList.HighScoreList (System.Collections.Generic.List)'имеет недопустимые аргументы C: \ Users \ eric \ Documents \ Visual Studio 2010 \ Projects \ TDGLX \ UnitTests \ FileManagmentTest \ HighScoreListTest.cs 183 54 UnitTests
В этом и нескольких других тестах:
HighScoreList<GenericScore> highScoreList =
new HighScoreList<GenericScore>(new List<GenericScore>()
{
new GenericScore("Person1",400),
new GenericScore("Person2",200),
new GenericScore("Person3",100)
});
HighScoreList<GenericScore> target =
new HighScoreList<GenericScore>(highScoreList);
Вот класс, который я использую в качестве параметра для списка аргументов шаблона в моих тестах.
[Serializable()]
public class GenericScore : System.IComparable<GenericScore>
{
public GenericScore(string name,int score)
{
Name = name;
Score = score;
}
public string Name { get; set; }
public int Score { get; set; }
public int CompareTo(GenericScore other)
{
return this.Score.CompareTo(other.Score);
}
}
Я действительно не могу понять, что не так с тестом.Что-то не так поняли в дженериках C #?