清理引用,将NavigatorServices更改为使用Message来实现导航的切换

This commit is contained in:
2025-06-23 17:01:06 +08:00
parent 8ee4b7bc05
commit 8fcd2fdf2a
62 changed files with 711 additions and 767 deletions

View File

@@ -1,52 +1,53 @@
using System.Reflection;
namespace PMSWPF.Extensions;
namespace PMSWPF.Extensions;
public static class ObjectExtensions
{
/// <summary>
/// 对象转换将source对象上的所有属性的值都转换到target对象上
/// 对象转换将source对象上的所有属性的值都转换到target对象上
/// </summary>
/// <param name="source"></param>
/// <param name="target"></param>
/// <typeparam name="T"></typeparam>
public static void CopyTo<T>(this Object source ,T target)
public static void CopyTo<T>(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);
}
}
}
/// <summary>
/// 创建一个泛型对象将source对象上的所有属性的值都转换到新创建对象上
/// </summary>
/// <param name="source"></param>
/// <param name="target"></param>
/// <typeparam name="T"></typeparam>
public static T NewTo<T>(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)
foreach (var sourceProperty in sourceProperties)
{
PropertyInfo targetProperty = targetType.GetProperty(sourceProperty.Name);
if (targetProperty!= null && targetProperty.CanWrite && sourceProperty.CanRead && targetProperty.PropertyType == sourceProperty.PropertyType)
var targetProperty = targetType.GetProperty(sourceProperty.Name);
if (targetProperty != null && targetProperty.CanWrite && sourceProperty.CanRead &&
targetProperty.PropertyType == sourceProperty.PropertyType)
{
object value = sourceProperty.GetValue(source, null);
var value = sourceProperty.GetValue(source, null);
targetProperty.SetValue(target, value, null);
}
}
}
/// <summary>
/// 创建一个泛型对象将source对象上的所有属性的值都转换到新创建对象上
/// </summary>
/// <param name="source"></param>
/// <param name="target"></param>
/// <typeparam name="T"></typeparam>
public static T NewTo<T>(this object source) where T : new()
{
var target = new T();
var sourceType = source.GetType();
var targetType = target.GetType();
var sourceProperties = sourceType.GetProperties();
foreach (var sourceProperty in sourceProperties)
{
var targetProperty = targetType.GetProperty(sourceProperty.Name);
if (targetProperty != null && targetProperty.CanWrite && sourceProperty.CanRead &&
targetProperty.PropertyType == sourceProperty.PropertyType)
{
var value = sourceProperty.GetValue(source, null);
targetProperty.SetValue(target, value, null);
}
}
return target;
}
}