私はこのようなことをしようとしています:
void someMethod(TypeA object) { ... }
void someMethod(TypeB object) { ... }
object getObject()
{
if (...) return new TypeA();
else return new TypeB();
}
object obj = getObject();
(obj.GetType()) obj; // won't compile
someMethod(obj);
明らかに私はここで混乱しています。条件文を書くだけでこの作業ができることはわかっています-
if (obj.GetType() == typeof(TypeA)) obj = (TypeA)obj;
else if (obj.GetType() == typeof(TypeB)) obj = (TypeB)obj;
-しかし、実行時にこれを行う方法はありませんか?
編集 私はそれがおそらく最良のデザインの選択ではないように思われることに同意します、それでここに文脈があります。上記のコードのポイントは、MongoDBのリポジトリ基本クラスです。さまざまな種類のテーブルを処理できるようにしたいと思います。したがって、someMethod()は実際には削除されます; TypeAとTypeBはObjectIDとGuidです。下部のコードは、IDを文字列として受け入れるタイプに依存しないremoveメソッドの一部です。getObject()は、IDパラメーターを解析するためのメソッドです。