但循环依赖性误差发生 我试图了解如何以另一种方式实施它,但我不知道...
所以我唯一的解决方案是public interface INode<T, N> where N : class
{
T Value { get; set; }
N Left { get; set; }
N Right { get; set; }
}
public class Node<T> : INode<T>
{
T Value { get; set; }
Node<T> Left { get; set; }
Node<T> Right { get; set; }
}
这是一个很好的做法,还是解决这些循环依赖性问题的哪些方法也适用? 我需要您的建议如何更好地实现此界面,否则没有任何接口(但我想这样做)会更好
这里没有循环依赖性。您的代码应该可以正常工作。这不是C ++,这确实是循环依赖性(除非节点元素是指示符)。唯一有点丑陋的是,您通常只有一个接口仅返回接口,而不是具体类,因此您将拥有
public interface INode<T>
{
T Value { get; set; }
INode<T> Left { get; set; }
INode<T> Right { get; set; }
}
要现在满足接口(并且仍然能够访问类类型),但是您现在必须明确实现该接口:
public class Node<T> : INode<T>
{
T Value { get; set; }
INode<T> INode<T>.Left => Left;
INode<T> INode<T>.Right => Right;
Node<T> Left { get; set; }
Node<T> Right { get; set; }
}