Преобразование неизвестного объекта KeyValuePair в KeyValuePair‹объект, объект›

У меня есть объект типа KeyValuePair<T1,T2> , но фактические типы T1,T2 известны только во время выполнения. Я хотел бы извлечь Key и Value этого объекта, но не знаю как. Не могли бы вы помочь? (Идея как ниже, но это не работает)

public override IDictionary<string, object> Serialize(object obj, JavaScriptSerializer serializer) {
     KeyValuePair<object, object> kvp = (KeyValuePair<object, object>)obj;
     Console.WriteLine("[{0},{1}]", kvp.Key, kvp.Value);
}

person Nghia Le    schedule 26.11.2014    source источник
comment
stackoverflow .com/questions/11576886/ ?   -  person Vrashabh Irde    schedule 26.11.2014
comment
Спасибо! Я уже думал об использовании отражения, но я упомянул возможный способ приведения/преобразования. Я немного беспокоился о производительности отражения (мне нужно преобразовать много этих объектов), но это кажется единственным способом.   -  person Nghia Le    schedule 26.11.2014
comment
Когда тип буквально не известен никем в коде во время компиляции, вы в значительной степени застряли с отражением или dynamic. Например. KeyValuePair‹объект, объект› = новый KeyValuePair‹объект, объект›(((динамический)объект).Ключ, ((динамический)объект).Значение)`. Тем не менее, эти сценарии необычны. Вероятно, в вашем конкретном сценарии есть лучший подход, но без дополнительного контекста невозможно каким-либо конкретным образом сказать, каким будет этот лучший подход.   -  person Peter Duniho    schedule 26.11.2014