需求:為任意類別提供 ToString(string format),格式字串中直接嵌入屬性名,如 \"Name 生日是 Brithday\" 自動替換為實際值。
public static string ToString1(this object obj, string format) {
var properties = obj.GetType().GetProperties(
BindingFlags.GetProperty | BindingFlags.Public | BindingFlags.Instance);
var names = properties.Select(p => p.Name).ToArray();
var pattern = string.Join("|", names); // 動態正則:Name|Brithday|Id...
return Regex.Replace(format, pattern, match => {
var prop = properties.First(p => p.Name == match.Value);
var val = prop.GetValue(obj, null);
return val != null ? val.ToString() : "";
});
}
\"Id Id\" 會雙重替換)後續版本將逐步解決上述問題。