我有一个“GenericNode”-父/子结构,我正在尝试为其创建一个 Find 方法。
public class GenericNode<TKey, TName>
{
private GenericNode<TKey, TName> parent;
private readonly TKey key;
private readonly TName name;
private readonly ICollection<GenericNode<TKey, TName>> children;
public GenericNode(TKey key, TName name) {
this.key = key;
this.name = name;
children = new Collection<GenericNode<TKey, TName>>();
}
// AddChild etc...
public GenericNode<TKey, TName> GetChildNodeById(TKey keyToFind)
{
return FindChild(node => node.key == keyToFind); // <--- THIS WON'T COMPILE
}
private GenericNode<TKey, TName> FindChild(Func<GenericNode<TKey, TName>, Boolean> matcher)
{
// Recursive search returning first matching node...
}
}
上面的(C# .NET 3.5)不起作用,因为它无法node.key
与-methodkeyToFind
进行比较。GetChildNodeById
我一直在尝试不同的通用约束等,但没有运气。如何指定 TKey:s 是同一类型?
我可以创建一个带有 Guid 作为键的派生类,并将 GetChildNodeById 移动到该类,但如果可能的话,我想要一个通用的解决方案。有什么想法吗?