public static bool IsEnabled(this SmartField smartfield, object entity, string isEmpty)
{
if (smartfield == null) throw new ArgumentNullException("smartfield");
if (smartfield.HideOnEmpty && isEmpty.IsNullOrEmpty()) return false;
if (smartfield.IsEnabledField.IsNullOrEmpty()) return true;
var signed = smartfield.IsEnabledField.StartsWith("!");
var visibleField = signed ? smartfield.IsEnabledField.Substring(1) : smartfield.IsEnabledField;
return signed ^ Convert.ToBoolean(PropertyHelper.GetValue(entity, visibleField));
}