Eri*_*ric 2 c# generics unit-testing class
试着在C#中编写我的第一个泛型类:
public class HighScoreList<ScoreType>
where ScoreType : System.IComparable<ScoreType>
{
...
public HighScoreList(List<ScoreType> highScoreList)
{
....
}
...
}
Run Code Online (Sandbox Code Playgroud)
我遇到了为它编写单元测试的问题.它不能由于某种原因匹配构造函数的参数列表并给出错误:
错误7"TDGLX.FileManagement.HighScoreList.HighScoreList(System.Collections.Generic.List)"的最佳重载方法匹配包含一些无效参数C:\ Users\eric\Documents\Visual Studio 2010\Projects\TDGLX\UnitTests\FileManagmentTest\HighScoreListTest.cs 183 54单元测试
在这个和其他几个测试:
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);
Run Code Online (Sandbox Code Playgroud)
这是我在测试中用作模板参数列表参数的类.
[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);
}
}
Run Code Online (Sandbox Code Playgroud)
我真的无法弄清楚测试有什么问题.是否有些东西误解了C#泛型?
HighScoreList<GenericScore> target =
new HighScoreList<GenericScore>(highScoreList);
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,您将a传递HighScoreList<GenericScore>给构造函数HighScoreList<GenericScore>,但它期望aList<GenericScore>
这不是你想要的吗?
List<GenericScore> highScoreList = new List<GenericScore>()
{
new GenericScore("Person1",400),
new GenericScore("Person2",200),
new GenericScore("Person3",100)
};
HighScoreList<GenericScore> target =
new HighScoreList<GenericScore>(highScoreList);
Run Code Online (Sandbox Code Playgroud)