static ValueCache <TValueType> GetCache <TValueType> (ValueCache.IContainer container, Func <TValueType> func) { object oldResult; if (container.Cache.TryGetValue(func, out oldResult)) { return((ValueCache <TValueType>)oldResult); } var newResult = new ValueCache <TValueType>(func); container.Cache.Add(func, newResult); return(newResult); }
public static TValueType CachedValue <TValueType> (this ValueCache.IContainer container, Func <TValueType> func) { return(GetCache(container, func).Value); }