我正在尝试做这样的事情:
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;
——但是在运行时没有办法做到这一点吗?
编辑 我同意这似乎不是最好的设计选择,所以这里是上下文。上面代码的重点是 Mongo DB 的 Repository 基类。我希望它能够处理不同类型的表格。所以, someMethod() 实际上是remove;和 TypeA 和 TypeB 是ObjectID和Guid;底部的代码是与类型无关的remove方法的一部分,该方法接受 ID 作为字符串;getObject() 是解析 ID 参数的方法。