0

这个错误消息到底在抱怨什么?

我正在尝试创建一个节点类,它可以保存一个值并指向其他节点,并且可以扩展为在每个节点中嵌入更多信息。递归模板给了我一些问题。

public class ColoredNode<T> : Node<ColoredNode<T>, T>
    where T : IComparable
{
    public ConsoleColor Color; 
}

public class BaseNode<T> : Node<BaseNode<T>, T>
    where T : IComparable
{
}

abstract public class Node<N, T>
    where N : Node<N, T>, new()
    where T : IComparable
{
    public N Parent;
    public N Child;
    public T Value;
}

GenericArguments[1], 'T', on 'Node`2[N,T]' 违反了类型参数 'T' 的约束。

4

1 回答 1

0

我设法得到了一个简单的复制案例:

public class Node<T> : Node<Node<T>, T>
    where T : IComparable
{
}

abstract public class Node<N, T>
    where N : Node<N, T>, new()
    where T : IComparable
{
}

我注意到抛出的错误消息是在我的测试 cs 项目中,而不是 Node 类所在的 cs 项目。但是,没有与错误关联的行或文件。如果我从解决方案中排除我的测试项目,则解决方案构建成功。

我不知道为什么会这样,但我最终尝试排除测试项目的自动生成的文件夹“Test References”,其中有一个 DataStructures.accessor 文件。排除该文件似乎可以解决问题。

于 2013-09-01T04:39:37.827 回答