泛型类不能匹配参数列表

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#泛型?

Tho*_*que 6

    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)