Testando se um objeto é um dicionário em c #

Existe uma maneira de testar se um objeto é um dicionário?

Em um método, estou tentando obter um valor de um item selecionado em uma caixa de listagem. Em algumas circunstâncias, a caixa de listagem pode estar vinculada a um dicionário, mas isso não é conhecido em tempo de compilação.

Eu gostaria de fazer algo semelhante a isto:

if (listBox.ItemsSource is Dictionary<??>)
{
    KeyValuePair<??> pair = (KeyValuePair<??>)listBox.SelectedItem;
    object value = pair.Value;
}

Existe uma maneira de fazer isso dinamicamente em tempo de execução usando reflexão? Eu sei que é possível usar reflexão com tipos genéricos e determinar os parâmetros chave / valor, mas não tenho certeza se há uma maneira de fazer o resto depois que esses valores forem recuperados.

questionAnswers(7)

yourAnswerToTheQuestion