private static void CopyValueToTarget(T source, T target) where T:class { Type type = source.GetType(); var fields= type.GetRuntimeFields().ToList(); foreach(var field in fields) { field.SetValue(target, field.GetValue(source)); } var properties = type.GetRuntimeProperties().ToList(); foreach (var property in properties) { property.SetValue(target, property.GetValue(source)); } }
//测试 Fish fish = new Fish() { Name = "ccc", Weight = (decimal)9.7 }; Fish copyFish = new Fish(); CopyValueToTarget(fish, copyFish);
根据官方说法,
GetRuntimeFields是检索表示指定类型定义的所有字段的集合。
GetFields是返回当前 Type 的所有公共
字段。
GetRuntimeProperties和GetProperties、GetRuntimeEvents和GetEvents等方法可以类推。
ReflectionDemo