2017-08-26 4 views
0

各階層レベルのノードが異なる(型付けされた)ペイロードオブジェクトを保持できる汎用ツリーデータ構造を実現する方法はありますか?C#複数のペイロードタイプを持つ汎用ツリー

私はキーでツリーを照会し、オブジェクトではなく型付きの結果を返すことができます。私はジェネリックインターフェイスで試しましたが、私はまだ各ペイロードタイプごとに別々のクエリルーチンを書く必要があるようです。ジェネリックなソリューションはより洗練されたものになるでしょう。多分方法はありませんか?

また、CodePlexまたはGitHubのすべての実装では、ツリー全体のすべてのノードで使用される1つのペイロードタイプしか許可されていないようです。私は各階層レベルで別々のペイロードオブジェクトが必要です。

おかげで、ポンポン

+0

任意のノードに* anything *を保存したい場合は、 'object'を格納してください。格納されたオブジェクトが値型である場合、ボクシングで発生しますが、任意のノードに割り当てるオブジェクトに利用できる*共通性*がない限り、何もできません。 – InBetween

答えて

1

あなたは(私はあなたがそれを望んでいない知っているが、他のオプションを参照しない)オブジェクトツリーを作成し、タイプを設定することができ照会するあなたの方法をことができます。

たとえば、tree.Query<T>()を返し、T要素のリストを返します。

希望します。

関連する問題