I have a generic method I use to memoize conversions of string values in the db to an actual converted value. 

```
public MySpecialValue {
    object val;
    bool valSet = false; 

    T GetValue<T> () { 
         if (!valSet)
         {
                val = (T)Convert.ChangeType(DatabaseValue, typeof(T));
                valSet = true;
         }
         return (T)val;
     }

     public string DatabaseValue { get; set; }
}

```

The trouble is that during initialization I do not know what type the data in the database is, its only on first call that I can make this decision. 

Is there any way to structure it in such a way that it is not forced to unbox value types that are cached? (without changing the signature of the containing class)