public object Interpret(string info) { List <string> placeholders = RegexUtil.CollectStrings(@"\[(.*?)\]", info); foreach (string placeholder in placeholders) { string[] fieldNames = placeholder.Split(':'); if (fieldNames.Length <= 1) { continue; } if (controlTypeExp.Interpret(fieldNames[0]) != null) { if (valueExp.ContainsKey(fieldNames[1])) { return(valueExp[fieldNames[1]].Interpret(fieldNames[1])); } else { if (valueExp.ContainsKey(fieldNames[0])) { return(valueExp[fieldNames[0]].Interpret(fieldNames[1])); } else { return(valueExp[ControlType.TextEdit].Interpret(fieldNames[1])); } } } else { return(DBNull.Value); } } return(DBNull.Value); }