public static string ComposeIcon(object entity, string value, string field, string format)
{
if (entity == null || field.IsNullOrEmpty()) return String.Format(format, value);
var signed = field.StartsWith("!");
var iconField = signed ? field.Substring(1) : field;
return String.Format(format, signed ^ Convert.ToBoolean(PropertyHelper.GetValue(entity, iconField)));
}