using System.Reflection; namespace PMSWPF.Extensions; public static class ObjectExtensions { /// /// 对象转换,将source对象上的所有属性的值,都转换到target对象上 /// /// /// /// public static void CopyTo(this Object source ,T target) { var sourceType = source.GetType(); var targetType = target.GetType(); var sourceProperties = sourceType.GetProperties(); foreach (PropertyInfo sourceProperty in sourceProperties) { PropertyInfo targetProperty = targetType.GetProperty(sourceProperty.Name); if (targetProperty!= null && targetProperty.CanWrite && sourceProperty.CanRead && targetProperty.PropertyType == sourceProperty.PropertyType) { object value = sourceProperty.GetValue(source, null); targetProperty.SetValue(target, value, null); } } } /// /// 创建一个泛型对象,将source对象上的所有属性的值,都转换到新创建对象上 /// /// /// /// public static void NewTo(this Object source ) where T : new() { T target = new T(); var sourceType = source.GetType(); var targetType = target.GetType(); var sourceProperties = sourceType.GetProperties(); foreach (PropertyInfo sourceProperty in sourceProperties) { PropertyInfo targetProperty = targetType.GetProperty(sourceProperty.Name); if (targetProperty!= null && targetProperty.CanWrite && sourceProperty.CanRead && targetProperty.PropertyType == sourceProperty.PropertyType) { object value = sourceProperty.GetValue(source, null); targetProperty.SetValue(target, value, null); } } } }