private T GetValueInternal <T>(string name, bool serverSide = false) { if (parameters.ContainsKey(name)) { object value = parameters[name].RawValue; if (value == null) { return(default(T)); } else if (typeof(T).IsAssignableFrom(value.GetType())) { return((T)value); } else if (Utils.CanChangeType(value, typeof(T))) { return((T)Convert.ChangeType(value, typeof(T))); } else { throw new InvalidCastException(string.Format("Cannot cast {0} to {1}", value.GetType().Name, typeof(T).Name)); } } else { parameters.Add(name, StateParameter.Construct(name, default(T), !serverSide)); return(parameters[name].GetValueInternal <T>()); } }
public StateParameter GetParameter <T>(string name, bool serverSide = false) { if (!parameters.ContainsKey(name)) { parameters.Add(name, StateParameter.Construct <T>(name, (T)Activator.CreateInstance(typeof(T)), serverSide)); } return(parameters[name]); }
private void InternalSet <T>(string name, T value, bool serverSide) { if (!parameters.ContainsKey(name)) { parameters.Add(name, StateParameter.Construct(name, value, !serverSide)); } else { parameters[name].SetValueInternal(value); } InvokeUpdated(parameters[name]); }