I'm sure that you have moved on by now (15 years later), but for future references, today it can be done like this:
// Not using TryGetValue
var theString = dict[key] as string;
// Using trygetValue
if(dict.TryGetValue(key, out obj) && obj is string theString)
{
}