2 セットのデータを含むクラスがあります。
- X の値のリスト。
- Y の値のリスト。
現在、X と Y は、可能な組み合わせで文字列/倍精度/整数/日時のいずれかを保持できます。唯一のルールは、任意の時点で両方のリストに同じ数の値が含まれている必要があるということです。
AddXY メソッドと RemoveAt メソッドを介してのみアクセスを提供することで、常に同じデータを保持するという問題を解決できました (任意の時点で、X List と Y List の両方が同じサイズであることを保証できます)。
さらに、このクラスのエンド ユーザーが、以下に示すように、インデクサーを介して X 値と Y 値にアクセスできるようにしたいと考えています。
someClassInstance.X[i] および someClassInstance.Y[i]
C# にはこれに関するオプションがないため、X と Y を IList (AsReadOnly) メソッドとして公開することにしました。
ここで、Generics を使用して型を制約するというアイデアを検討しました。しかし、この特定のケースに適切な例を見つけることができません。
どう言えばいいの
public class MyClass<P, Q>
where P : Double, String, Integer, DateTime
and Q : Double, String, Integer, DateTime
アイデアを完全に破棄して、ある種のタプルまたはそのようなデータ構造を検討する必要がありますか?
編集:制約を値型にすることはできないことも知っていますが、これはどのように機能しますか?