public Property Get <Property>(Expression <Func <T, Property> > expression) { var propName = NotifyPropertyChangedHelper.GetPropertyName(expression); if (!properties.ContainsKey(propName)) { properties.Add(propName, GetDefault <Property>()); } return((Property)properties[propName]); }
public bool Set <Property>(Expression <Func <T, Property> > expression, Property newValue) { var propName = NotifyPropertyChangedHelper.GetPropertyName(expression); if (!properties.ContainsKey(propName)) { properties.Add(propName, newValue); propertyContainer.RaisePropertyChangedEvent(propName); } else { if (EqualityComparer <Property> .Default.Equals((Property)properties[propName], newValue)) { return(false); } properties[propName] = newValue; propertyContainer.RaisePropertyChangedEvent(propName); } return(true); }