Я немного запутался. Вы пытаетесь сохранить любые типы объектов в своем словаре, но получаете к ним доступ без отражения.
Если это так, вы можете использовать dynamic
типы:
Словарь dict = новый словарь ();
dict["string"] = "some string";
dict["int"] = 25;
dict["my_class"] = new MyClass {SomeProperty = 12};
И тогда вы можете получить доступ ко всем этим значениям без приведения:
string s1 = dict["string"].Substring(0, 4); // s1 equals to "some"
int propertyValue = dict["my_class"].SomeProperty; // propertyValue equals to 12
где MyClass:
class MyClass
{
public int SomeProperty {get;set;}
}