public T GetValue <T>(string propertyName, T defaultValue) { // The propertyTable GetProperty with a default can set and broadcast // we don't want that in our ReadOnly version so we can't use that T tableValue; return(m_propertyTable.TryGetValue(propertyName, out tableValue) ? tableValue : defaultValue); }