public void Set <T>(Expression <Func <T> > propertyExpression, ref T field, T newValue, bool validate, bool isDirty = false)
        {
            if (Set(propertyExpression, ref field, newValue))
            {
                if (validate)
                {
                    validator.Validate(propertyExpression, newValue);
                }

                if (TrackChanges)
                {
                    IsDirty = isDirty;
                }
            }
        }