protected void Set <TValue>(Expression <Func <TValue> > property, TValue value) { string propertyName = ((MemberExpression)property.Body).Member.Name; TValue oldValue = Get(property); values[propertyName] = value; instance.OnPropertySet(propertyName, oldValue, value); }