This is an sister class to some Session classes I wrote awhile back (which I never posted). I originally wrote these extension methods for the code camp eval system for Twin Cities Code Camp last year. But I needed it today at my client so I figured I’d post it here for future reference … and so you could use it.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | public static class TempDataExtensions { public static void Put<T>( this TempDataDictionary tempData, T value) where T : class { tempData[ typeof (T).FullName] = value; } public static void Put<T>( this TempDataDictionary tempData, string key, T value) where T : class { tempData[ typeof (T).FullName + key] = value; } public static T Get<T>( this TempDataDictionary tempData) where T : class { object o; tempData.TryGetValue( typeof (T).FullName, out o); return o == null ? null : (T)o; } public static T Get<T>( this TempDataDictionary tempData, string key) where T : class { object o; tempData.TryGetValue( typeof (T).FullName + key, out o); return o == null ? null : (T)o; } } |
The code above allows you to put values into TempData in a strongly typed fashion. You can then get the values back out (safely) without worrying about an exception being thrown (temp data will throw if the key is not found).
Usage:
1 2 3 4 5 6 7 8 9 | var customer = new Customer(); TempData.Put(customer); // Strongly typed without key TempData.Put( "key1" , customer); // Strongly typed with extra key var tempDataCustomer = TempData.Get<Customer>(); // Get customer without key var tempDataCustomerWithKey = TempData.Get<Customer>( "key1" ); // Get customer with key |