C# 反射 循环属性、字段赋值
private static void CopyValueToTarget<T>(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>(fish, copyFish);
GetRuntimeFields和GetFields
根据官方说法,
GetRuntimeFields是检索表示指定类型定义的所有字段的集合。
GetFields是返回当前 Type 的所有公共
字段。
GetRuntimeProperties和GetProperties、GetRuntimeEvents和GetEvents等方法可以类推。
示例代码
学习技术最好的文档就是【官方文档】,没有之一。
还有学习资料【Microsoft Learn】、【CSharp Learn】、【My Note】。
如果,你认为阅读这篇博客让你有些收获,不妨点击一下右下角的【推荐】按钮。
如果,你希望更容易地发现我的新博客,不妨点击一下【关注】。