在公司的情境DB的資料表有固定相同名稱的欄位
可能是建檔人或修改人
在複雜的資料要新增下
需要hardcode對這些相同欄位給值
所以想了方式讓程式碼精簡一點
private static T SetValue<T>(T source, string property, object value)
{
var type = source.GetType();
type.GetProperty(property)?.SetValue(source, value);
var props = type.GetProperties(BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Instance)
.Where(c => c.PropertyType.IsClass && c.PropertyType != typeof(string))
.ToList();
//GetValue只會回傳object 所以要用GetType()才能取到真正型別
props.ForEach(c => SetValue(c.GetValue(source), property, value));
return source;
}
這樣遞迴的方式就可以一層一層給值
但是碰到IEnuerable的屬性可能就還是要hardcode了