重複の可能性:
演算子 == を C# のジェネリック型に適用できませんか?
Find メソッドを作成しようとしている「GenericNode」-親/子構造があります。
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
ん。私は運がなければ、さまざまな一般的な制約などを試してきました。TKey:s が同じ型であることを指定するにはどうすればよいですか?keyToFind
GetChildNodeById
キーの Guid を使用して派生クラスを作成し、GetChildNodeById をそのクラスに移動することもできますが、可能であれば汎用ソリューションが必要です。何かご意見は?