オブジェクトの不足している演算子のオーバーロードを無視し、代わりに実行時にそのチェックを処理するように C# コンパイラに強制する方法はありますか? int 型、string 型、ushort 型などのさまざまな属性を持つ複数のオブジェクトを含むコンテナーがあるためです。そのコンテナの検索機能を作っているのですが、いろいろな分野で検索できるようにしたいと思っています。
述語とラムダ式を使用しています。
これは私が欲しいものです:
var data = container.Retrieve(ID => (ID == 5), Date => (Date > somedate));
ID と Date がコンテナのオブジェクトのフィールドであると仮定します
これは私が今日しなければならないことです(ただし、動作します):
var data = container.Retrieve(ID => ((int)ID == 5), Date => ((DateTime)Date > somedate));
この追加のキャストは、最初の例と比べて見栄えがよくありません。これを行う必要はありません。代わりに実行時にこれをチェックするオプションが欲しいです。
これを達成する方法はありますか?