using System; using System.Collections.Generic; namespace FSO.Client.Utils { /// /// Utility so calculations are only performed once where appropriate /// public class MathCache { private Dictionary m_Value = new Dictionary(); public void Invalidate() { m_Value.Clear(); } public void Invalidate(string id) { m_Value.Remove(id); } public TResult Calculate(string id, Func calculator) { if (!m_Value.ContainsKey(id)) { m_Value.Add(id, calculator.Invoke(null)); } return (TResult)m_Value[id]; } } }