Как распаковать объект C#в динамический тип

Я пытаюсь сделать что-то вроде этого:

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. Я хочу, чтобы он мог обрабатывать разные типы таблиц. Итак, someMethod()на самом деле remove ; а TypeA и TypeB — это ObjectID и Guid ; код внизу является частью метода -независимого от типа удаления , который принимает идентификатор в виде строки; а getObject()— это метод анализа параметра ID.

10
задан McGarnagle 23 June 2012 в 19:13
поделиться