お世話に成ります。
UnityのMathematicsにある構造体(float2やfloat3等)のインターフェイスに定義されているのが現在 System.IEquatable<float2>, IFormattableと成っております
一方自分が新しくジェネリック構造体を作成しようとしています。
インターフェイスとしては以下のような物を必要として
public unsafe struct XXList<TKey,TValue> : IDisposable,IEnumerable where TKey : unmanaged,System.IEquatable<TKey>,IComparable<TKey> where TValue : unmanaged {
その中でTkeyで指定した方でCompareToを利用したいと思っています。
その時にTkeyにfloat2を指定しようするとComparetorが無いのでエラーと成ります。
float2とか予め定義されている(パッケージマネージャからダウンロードすると)構造体に追加でIComparable<float2>を追加する方法はありますでしょうか?
当方インターフェイスなどに余り詳しくなく、ご教示願えればと思います。
宜しくお願いいたします。
おそらくご質問者さんがおっしゃる通りのものを実現する機能はないんじゃないかと思います。
代替案となると https://stackoverflow.com/questions/19341289/extend-a-class-to-conform-to-an-interface のような、内部に実際のデータとしてfloat2なりを持ったIComparableを実装したラッパー型を作ることになるんじゃないでしょうか。
作成なさろうとしているXXListとはどのような機能を持つのでしょうか?詳しくご提示いただければ、何か他の案の手がかりになるかもしれません。
bongo様、いつもお世話に成ります。
上記件ラッパー型を介する旨理解しました。ご教示の程ありがとうございます。
XXLISTの中身ですが、今のPJに入っている物で、詳細は言えませんが
TKeyでの大小比較を行う機能があって、コンパレータの結果を使って検索を目指すDB的な物を実装しようとしております。
このListを使う場合はラッパーを介した構造体を使うよう仕様に書いて終わりにしたいと思います。
丁寧なご回答、どうも有難うございました。
回答1件
あなたの回答
tips
プレビュー