Easy-DotNET Easy-DotNET
🏠首页
  • 知识地图
  • 源码脑图

    • 总览
    • Program
    • WebApplication
    • Host主机
    • WebHost主机
    • 依赖注入
    • Autofac
    • Middleware中间件
    • RateLimiter限制速率
    • 响应缓存、请求解压缩
  • 设计初衷
  • 克隆
  • 类型转换
  • 日期时间
  • IO流
  • 工具类
  • 语言特性
  • 集合类
  • Codec编码
  • 文本操作
  • 数学
  • 图片
  • 网络
  • Emoji表情
  • C# 12
  • C# 11
  • C# 10
  • C# 9.0
  • C# 8.0
  • C# 早期版本
  • C# 教程
  • ORM
  • 定时任务
  • 日志
  • 认证与授权
  • Swagger
  • 对象映射
  • 熔断重试限流
  • 缓存
  • 注册发现
  • 网关
  • GraphQL
  • 更多
  • Docker

    • 简介
    • Adminer
    • Apisix
    • Apollo
    • Cassandra
    • Cerebro
    • ClickHouse
    • Consul
    • EasyMock
    • Elasticsearch
    • Emqx
    • FastDFS
    • Flink
    • Gitlab
    • Jenkins
    • Jrebel
    • MariaDB
    • MySQL
    • Percona
    • Phpmyadmin
    • PostgreSQL
    • Redis
  • Linux

    • 查看Linux系统信息
    • CentOS7调整磁盘分区
    • IO压测
    • 图形化监控工具Cockpit
  • 总览
  • 列表

    • 算法数据结构
    • API
    • 应用框架
    • 应用模板
    • 操作系统
    • 工作流
    • 入门套件
    • 示例
    • 人工智能
    • 程序集
    • Assets
    • 认证授权
    • Blazor
    • 区块链
    • 书籍
    • 自动构建
    • 报表
    • 缓存
    • 日历
    • 聊天
    • CLI
    • CLR
    • CMS
    • 代码分析和指标
    • 代码片段
    • 压缩
    • 持续集成
    • 密码学
    • 数据库
    • 数据库驱动
    • 日期时间
    • 反编译
    • 部署
    • DirectX
    • 分布式计算
    • DLR
    • 文档
    • 电商支付
    • 模拟器
    • 环境管理
    • ETL
    • 事件消息
    • Exception
    • 扩展
    • 函数式编程
    • 游戏引擎
    • GIS
    • Git工具
    • 绘图
    • GraphQL
    • GUI
    • HTML-CSS
    • HTTP
    • IDE
    • 图片处理
    • 安装工具
    • 交互式编程
    • 国际化
    • 互操作性
    • IoC
    • JS引擎
    • 日志
    • 机器学习和数据科学
    • Markdown
    • 邮件
    • 数学
    • 媒体
    • 指标
    • 微型框架
    • 最小化器
    • MVVM
    • 网络
    • 对象映射
    • Office
    • OpenAI
    • ORM
    • 包管理器
    • PDF
    • 性能分析工具
    • 协议
    • 推送通知
    • SQL构建器
    • 消息队列
    • RPC
    • 响应式编程
    • 实时通信
    • 正则表达式
    • 任务调度
    • SDK和API
    • 搜索引擎
    • 序列化
    • SMS
    • 状态机
    • 静态站点生成
    • 强命名
    • 风格指南
    • 模板引擎
    • 测试
    • 工具
    • 交易
    • UI自动测试
    • Visual Studio 插件
    • Web浏览器
    • Web框架
    • WebServers
    • WebSocket
    • Windows服务
    • WPF
    • 解析器
    • 源码生成
    • 其他
    • 资源
  • AspNetCore面试题
  • Elasticsearch面试题
  • MongoDB面试题
  • MySql面试题
  • Nginx面试题
  • RabbitMQ面试题
  • Redis面试题
  • 设计模式
  • 微服务
🧑‍💻.NET Blog
GitHub (opens new window)
🏠首页
  • 知识地图
  • 源码脑图

    • 总览
    • Program
    • WebApplication
    • Host主机
    • WebHost主机
    • 依赖注入
    • Autofac
    • Middleware中间件
    • RateLimiter限制速率
    • 响应缓存、请求解压缩
  • 设计初衷
  • 克隆
  • 类型转换
  • 日期时间
  • IO流
  • 工具类
  • 语言特性
  • 集合类
  • Codec编码
  • 文本操作
  • 数学
  • 图片
  • 网络
  • Emoji表情
  • C# 12
  • C# 11
  • C# 10
  • C# 9.0
  • C# 8.0
  • C# 早期版本
  • C# 教程
  • ORM
  • 定时任务
  • 日志
  • 认证与授权
  • Swagger
  • 对象映射
  • 熔断重试限流
  • 缓存
  • 注册发现
  • 网关
  • GraphQL
  • 更多
  • Docker

    • 简介
    • Adminer
    • Apisix
    • Apollo
    • Cassandra
    • Cerebro
    • ClickHouse
    • Consul
    • EasyMock
    • Elasticsearch
    • Emqx
    • FastDFS
    • Flink
    • Gitlab
    • Jenkins
    • Jrebel
    • MariaDB
    • MySQL
    • Percona
    • Phpmyadmin
    • PostgreSQL
    • Redis
  • Linux

    • 查看Linux系统信息
    • CentOS7调整磁盘分区
    • IO压测
    • 图形化监控工具Cockpit
  • 总览
  • 列表

    • 算法数据结构
    • API
    • 应用框架
    • 应用模板
    • 操作系统
    • 工作流
    • 入门套件
    • 示例
    • 人工智能
    • 程序集
    • Assets
    • 认证授权
    • Blazor
    • 区块链
    • 书籍
    • 自动构建
    • 报表
    • 缓存
    • 日历
    • 聊天
    • CLI
    • CLR
    • CMS
    • 代码分析和指标
    • 代码片段
    • 压缩
    • 持续集成
    • 密码学
    • 数据库
    • 数据库驱动
    • 日期时间
    • 反编译
    • 部署
    • DirectX
    • 分布式计算
    • DLR
    • 文档
    • 电商支付
    • 模拟器
    • 环境管理
    • ETL
    • 事件消息
    • Exception
    • 扩展
    • 函数式编程
    • 游戏引擎
    • GIS
    • Git工具
    • 绘图
    • GraphQL
    • GUI
    • HTML-CSS
    • HTTP
    • IDE
    • 图片处理
    • 安装工具
    • 交互式编程
    • 国际化
    • 互操作性
    • IoC
    • JS引擎
    • 日志
    • 机器学习和数据科学
    • Markdown
    • 邮件
    • 数学
    • 媒体
    • 指标
    • 微型框架
    • 最小化器
    • MVVM
    • 网络
    • 对象映射
    • Office
    • OpenAI
    • ORM
    • 包管理器
    • PDF
    • 性能分析工具
    • 协议
    • 推送通知
    • SQL构建器
    • 消息队列
    • RPC
    • 响应式编程
    • 实时通信
    • 正则表达式
    • 任务调度
    • SDK和API
    • 搜索引擎
    • 序列化
    • SMS
    • 状态机
    • 静态站点生成
    • 强命名
    • 风格指南
    • 模板引擎
    • 测试
    • 工具
    • 交易
    • UI自动测试
    • Visual Studio 插件
    • Web浏览器
    • Web框架
    • WebServers
    • WebSocket
    • Windows服务
    • WPF
    • 解析器
    • 源码生成
    • 其他
    • 资源
  • AspNetCore面试题
  • Elasticsearch面试题
  • MongoDB面试题
  • MySql面试题
  • Nginx面试题
  • RabbitMQ面试题
  • Redis面试题
  • 设计模式
  • 微服务
🧑‍💻.NET Blog
GitHub (opens new window)
npm
  • 最全工具类

    • 设计初衷
  • 克隆

    • 对象克隆-CloneUtil
  • 类型转换

    • 类型转换-ConvertUtil
  • 日期时间

    • 日期工具-DateTimeUtil
    • 时间戳工具-TimestampUtil
    • 农历工具-LunarCalendarUtil
    • 计时器工具-TimerUtil
  • IO流

    • IO工具类-IoUtil
    • 文件工具类-FileUtil
    • 文件类型判断-FileTypeUtil
    • 文件监听-WatchMonitor
    • 文件跟随-Tailer
  • 工具类

    • 概述
    • 信息脱敏工具-DesensitizedUtil
    • 字符串工具-StrUtil
    • 16进制工具-HexUtil
    • Escape工具-EscapeUtil
    • Hash算法-HashUtil
    • URL工具-URLUtil
    • XML工具-XmlUtil
    • 对象工具-ObjectUtil
      • 由来
      • EasyTool.ObjectUtil 类
        • IsNull-检查对象是否为 null
        • IsNotNull-检查对象是否不为 null
        • IsNullOrEmpty-检查对象是否为空(null 或者 空字符串或空白字符)
        • IsNotNullOrEmpty-检查对象是否不为空(非 null 且 非空字符串 或者 非空集合)
        • Equals-检查两个对象是否相等
        • GetTypeName-获取对象的类型名称
        • Convert-将对象转换为指定类型
        • GetProperties-获取对象的属性列表
        • GetPropertyValue-获取对象的属性值
        • SetPropertyValue-设置对象的属性值
        • GetFields-获取对象的字段列表
        • GetFieldValue-获取对象的字段值
        • SetFieldValue-设置对象的字段值
        • GetMethods-获取对象的方法列表
        • ImplementsInterface-判断对象是否实现了指定接口
        • IsInstanceOfType-判断对象是否为指定类型的实例
        • EncryptPropertyValue-对象属性或字段值的加密
        • DecryptPropertyValue-对象属性或字段值的解密
        • ProcessPropertyValue-在对象属性或字段上进行特定的处理
        • ToJson-将对象序列化为 JSON 字符串
        • FromJson-将 JSON 字符串反序列化为对象
        • ToXml-将对象序列化为 XML 字符串
        • FromXml-将 XML 字符串反序列化为对象
        • ToDictionary-将对象转换为字典
        • FromDictionary-将字典转换为对象
        • Compare-比较两个对象的差异(属性值或字段值不同)
        • GetHashCode-获取对象的哈希码
        • DeepClone-深拷贝对象
        • IsValueType-判断对象是否为值类型
        • ToKeyValuePairs-将对象转换为键值对集合
      • 使用示例
      • 参考资料
    • 反射工具-ReflectUtil
    • 泛型类型工具-TypeUtil
    • 分页工具-PageUtil
    • 类工具-ClassUtil
    • 程序集工具-DLLUtil
    • 枚举工具-EnumUtil
    • 环境工具-EnvUtil
    • 进程工具-ProcessUtil
    • 运行时工具-RuntimeUtil
    • 数字工具-NumberUtil
    • 数组工具-ArrayUtil
    • 随机工具-RandomUtil
    • 唯一ID工具-IdUtil
    • 压缩工具-ZipUtil
    • 正则工具-RegexUtil
    • 身份证工具-IdcardUtil
    • 社会信用代码工具-CreditCodeUtil
    • MEF加载工具-MEFUtil
  • 语言特性

    • 单例工具-SingletonUtil
    • 二进码十进数-BCDUtil
    • 树结构工具-TreeUtil
  • 集合类

    • 概述
    • 字典工具-DictionaryUtil
    • 列表工具-ListUtil
    • Iterator工具-IteratorUtil
    • 队列工具-QueueUtil
    • 堆栈工具-StackUtil
    • 双向链表-LinkedListUtil
  • Codec编码

    • Base62编码解码-Base62
    • Base64编码解码-Base64
    • Base32编码解码-Base32
    • 莫尔斯电码-Morse
    • BCD码-BCD
    • 回转N位密码-Rot
    • Punycode实现-PunyCode
  • 文本操作

    • CSV文件处理工具-CsvUtil
    • Unicode编码转换工具-UnicodeUtil
    • 字符串切割-StrSplitter
  • 数学

    • 数学相关-MathUtil
    • 数据预测-PredictUtil
  • 图片

    • 图片工具-ImgUtil
  • 网络

    • 网络工具-NetUtil
  • Emoji表情

    • Emoji工具-EmojiUtil
目录

对象工具-ObjectUtil

# 由来

在我们的日常使用中,有些方法是针对Object通用的,这些方法不区分何种对象,针对这些方法,EasyTool封装为ObjectUtil。

下面是ObjectUtil工具类的一些方法列表:

  • IsNull:检查对象是否为 null。
  • IsNotNull:检查对象是否不为 null。
  • IsNullOrEmpty:检查对象是否为空(null 或者 空字符串或空白字符)。
  • IsNotNullOrEmpty:检查对象是否不为空(非 null 且 非空字符串 或者 非空集合)。
  • Equals:检查两个对象是否相等。
  • GetTypeName:获取对象的类型名称。
  • Convert<T>:将对象转换为指定类型。
  • Convert:将对象转换为指定类型。
  • GetProperties:获取对象的属性列表。
  • GetPropertyValue:获取对象的属性值。
  • SetPropertyValue:设置对象的属性值。
  • GetFields:获取对象的字段列表。
  • GetFieldValue:获取对象的字段值。
  • SetFieldValue:设置对象的字段值。
  • GetMethods:获取对象的方法列表。
  • ImplementsInterface:判断对象是否实现了指定接口。
  • CreateInstance:创建指定类型的实例。
  • IsInstanceOfType:判断对象是否为指定类型的实例。
  • EncryptPropertyValue:对象属性或字段值的加密或解密。
  • DecryptPropertyValue:对象属性或字段值的解密。
  • ProcessPropertyValue:在对象属性或字段上进行特定的处理。
  • ToJson:将对象序列化为 JSON 字符串。
  • FromJson<T>:将 JSON 字符串反序列化为对象。
  • ToXml:将对象序列化为 XML 字符串。
  • FromXml<T>:将 XML 字符串反序列化为对象。
  • ToDictionary:将对象转换为字典。
  • FromDictionary<T>:将字典转换为对象。
  • Compare:比较两个对象的差异(属性值或字段值不同)。
  • GetHashCode:获取对象的哈希码。
  • DeepClone<T>:深拷贝对象。
  • IsValueType:判断对象是否为值类型。
  • ToKeyValuePairs:将对象转换为键值对集合。
  • DeepCopy:实现深度复制对象
  • CopyProperties:将源对象的属性复制到目标对象中
  • GetType:获取指定类型的 Type 对象
  • GetMembers:获取类型的所有成员信息,包括字段、属性、方法和事件等。
  • GetProperties:获取类型的所有属性信息。
  • GetFields:获取类型的所有字段信息。
  • GetProperty:获取指定名称的属性信息。
  • GetField:获取指定名称的字段信息。
  • GetMethod:获取指定名称的方法信息。
  • InvokeMethod:调用对象的指定方法。
  • CreateInstance:创建指定类型的实例。
  • IsSubclassOf:判断指定类型是否派生自指定的基类或接口。
  • GetSubclassesOf:获取指定类型的所有派生类型。
  • GetInterfaces:获取指定类型实现的所有接口类型。
  • GetAssemblyQualifiedName:获取指定类型的程序集限定名。
  • GetDefault: 获取指定类型的默认值。
  • IsDefaultValue: 判断对象是否是其类型的默认值。
  • IsNullable: 判断指定类型是否是可空类型。
  • GetNullableType: 获取可空类型的基础类型。
  • GetUnderlyingType: 获取可空类型或枚举类型的基础类型。
  • IsSimpleType: 判断指定类型是否是简单类型。
  • IsNumericType: 判断指定类型是否是数字类型。
  • IsBooleanType: 判断指定类型是否是布尔类型。
  • IsDateTimeType: 判断指定类型是否是日期时间类型。
  • IsEnumType: 判断指定类型是否是枚举类型。
  • IsEnumerableType: 判断指定类型是否是集合类型。
  • ToDynamic: 将对象转换为动态扩展对象。
  • SerializeToJson: 将对象序列化为 JSON 字符串。
  • DeserializeFromJson: 将 JSON 字符串反序列化为指定类型的对象。
  • SerializeToXml: 将对象序列化为 XML 字符串。
  • DeserializeFromXml: 将 XML 字符串反序列化为指定类型的对象。
  • SerializeToBinary: 将对象序列化为二进制数据。
  • DeserializeFromBinary: 将二进制数据反序列化为指定类型的对象。

这个工具类提供了一组操作对象的方法,涵盖了对象的基本操作、序列化和反序列化、加密和解密、拷贝和转换、排序和比较等等。每个方法都有详细的注释,你可以根据自己的需要选择使用。需要注意的是,由于不同对象的实现方式和数据结构不同,有些方法可能不能通用,需要进行适当的修改和定制化。

# EasyTool.ObjectUtil 类

静态工具类 ObjectUtil,提供了一组操作对象的方法,主要包括以下功能:

  • 对象的基本操作:包括检查对象是否为 null、检查对象是否为空、检查对象是否相等、获取对象的类型名称等。
  • 对象的属性和字段操作:包括获取和设置对象的属性值和字段值,以及对属性和字段进行加密和解密、特定处理等操作。
  • 对象的序列化和反序列化:提供将对象序列化为 JSON 或 XML 字符串,以及将 JSON 或 XML 字符串反序列化为对象的方法。
  • 对象的拷贝和转换:包括将对象转换为指定类型、将对象转换为字典、将字典转换为对象、进行深拷贝等操作。
  • 对象的比较和排序:提供比较两个对象的差异、获取对象的哈希码、将对象转换为键值对集合等方法,方便进行对象的比较和排序。

# IsNull-检查对象是否为 null

/// <summary>
/// 检查对象是否为 null
/// </summary>
public static bool IsNull(object obj)

# IsNotNull-检查对象是否不为 null

/// <summary>
/// 检查对象是否不为 null
/// </summary>
public static bool IsNotNull(object obj)

# IsNullOrEmpty-检查对象是否为空(null 或者 空字符串或空白字符)

/// <summary>
/// 检查对象是否为空(null 或者 空字符串或空白字符)
/// </summary>
public static bool IsNullOrEmpty(object obj)

# IsNotNullOrEmpty-检查对象是否不为空(非 null 且 非空字符串 或者 非空集合)

/// <summary>
/// 检查对象是否不为空(非 null 且 非空字符串 或者 非空集合)
/// </summary>
public static bool IsNotNullOrEmpty(object obj)

# Equals-检查两个对象是否相等

/// <summary>
/// 检查两个对象是否相等
/// </summary>
public static bool Equals(object obj1, object obj2)

# GetTypeName-获取对象的类型名称

/// <summary>
/// 获取对象的类型名称
/// </summary>
public static string GetTypeName(object obj)

# Convert-将对象转换为指定类型

/// <summary>
/// 将对象转换为指定类型
/// </summary>
public static T Convert<T>(object obj)

/// <summary>
/// 将对象转换为指定类型
/// </summary>
public static object Convert(object obj, Type targetType)

# GetProperties-获取对象的属性列表

/// <summary>
/// 获取对象的属性列表
/// </summary>
public static IEnumerable<PropertyInfo> GetProperties(object obj)

# GetPropertyValue-获取对象的属性值

/// <summary>
/// 获取对象的属性值
/// </summary>
public static object GetPropertyValue(object obj, string propertyName)

# SetPropertyValue-设置对象的属性值

/// <summary>
/// 设置对象的属性值
/// </summary>
public static void SetPropertyValue(object obj, string propertyName, object value)

# GetFields-获取对象的字段列表

/// <summary>
/// 获取对象的字段列表
/// </summary>
public static IEnumerable<FieldInfo> GetFields(object obj)

# GetFieldValue-获取对象的字段值

/// <summary>
/// 获取对象的字段值
/// </summary>
public static object GetFieldValue(object obj, string fieldName)

# SetFieldValue-设置对象的字段值

/// <summary>
/// 设置对象的字段值
/// </summary>
public static void SetFieldValue(object obj, string fieldName, object value)

# GetMethods-获取对象的方法列表

/// <summary>
/// 获取对象的方法列表
/// </summary>
public static IEnumerable<MethodInfo> GetMethods(object obj)

# ImplementsInterface-判断对象是否实现了指定接口

/// <summary>
/// 判断对象是否实现了指定接口
/// </summary>
public static bool ImplementsInterface(object obj, Type interfaceType)

# IsInstanceOfType-判断对象是否为指定类型的实例

/// <summary>
/// 判断对象是否为指定类型的实例
/// </summary>
public static bool IsInstanceOfType(object obj, Type targetType)

# EncryptPropertyValue-对象属性或字段值的加密

/// <summary>
/// 对象属性或字段值的加密
/// </summary>
public static void EncryptPropertyValue(object obj, string propertyName, Func<string, string> encryptFunc)

# DecryptPropertyValue-对象属性或字段值的解密

/// <summary>
/// 对象属性或字段值的解密
/// </summary>
public static void DecryptPropertyValue(object obj, string propertyName, Func<string, string> decryptFunc)

# ProcessPropertyValue-在对象属性或字段上进行特定的处理

/// <summary>
/// 在对象属性或字段上进行特定的处理
/// </summary>
public static void ProcessPropertyValue(object obj, string propertyName, Action<object> processAction)

# ToJson-将对象序列化为 JSON 字符串

/// <summary>
/// 将对象序列化为 JSON 字符串
/// </summary>
public static string ToJson(object obj)

# FromJson-将 JSON 字符串反序列化为对象

/// <summary>
/// 将 JSON 字符串反序列化为对象
/// </summary>
public static T FromJson<T>(string json)

# ToXml-将对象序列化为 XML 字符串

/// <summary>
/// 将对象序列化为 XML 字符串
/// </summary>
public static string ToXml(object obj)

# FromXml-将 XML 字符串反序列化为对象

/// <summary>
/// 将 XML 字符串反序列化为对象
/// </summary>
public static T FromXml<T>(string xml)

# ToDictionary-将对象转换为字典

/// <summary>
/// 将对象转换为字典
/// </summary>
public static Dictionary<string, object> ToDictionary(object obj)

# FromDictionary-将字典转换为对象

/// <summary>
/// 将字典转换为对象
/// </summary>
public static T FromDictionary<T>(Dictionary<string, object> dictionary) where T : new()

# Compare-比较两个对象的差异(属性值或字段值不同)

/// <summary>
/// 比较两个对象的差异(属性值或字段值不同)
/// </summary>
public static IEnumerable<string> Compare(object obj1, object obj2)

# GetHashCode-获取对象的哈希码

/// <summary>
/// 获取对象的哈希码
/// </summary>
public static int GetHashCode(object obj)

# DeepClone-深拷贝对象

/// <summary>
/// 深拷贝对象
/// </summary>
public static T DeepClone<T>(T obj)

# IsValueType-判断对象是否为值类型

/// <summary>
/// 判断对象是否为值类型
/// </summary>
public static bool IsValueType(object obj)

# ToKeyValuePairs-将对象转换为键值对集合

/// <summary>
/// 将对象转换为键值对集合
/// </summary>
public static IEnumerable<KeyValuePair<string, object>> ToKeyValuePairs(object obj)

# 使用示例

以下示例演示了如何使用 ObjectUtil 工具类进行对象的序列化、反序列化和比较操作。首先定义了一个 Person 类和一个 Address 类,然后创建了一个 Person 对象并进行操作。将对象转换为 JSON 字符串,然后再将 JSON 字符串反序列化为对象,最后比较两个对象的差异并输出结果。这个示例仅仅是 ObjectUtil 工具类的简单使用,更多功能请参考工具类的注释和方法说明。

using System;
using System.Collections.Generic;

namespace ObjectUtilDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            // 示例对象
            Person person = new Person
            {
                Name = "Tom",
                Age = 18,
                Email = "tom@test.com",
                Address = new Address
                {
                    Province = "Guangdong",
                    City = "Shenzhen",
                    Street = "Futian"
                }
            };

            // 将对象转换为 JSON 字符串
            string json = ObjectUtil.ToJson(person);
            Console.WriteLine($"将对象转换为 JSON 字符串:\n{json}\n");

            // 将 JSON 字符串反序列化为对象
            Person deserializedPerson = ObjectUtil.FromJson<Person>(json);
            Console.WriteLine("将 JSON 字符串反序列化为对象:");
            Console.WriteLine($"Name: {deserializedPerson.Name}");
            Console.WriteLine($"Age: {deserializedPerson.Age}");
            Console.WriteLine($"Email: {deserializedPerson.Email}");
            Console.WriteLine($"Province: {deserializedPerson.Address.Province}");
            Console.WriteLine($"City: {deserializedPerson.Address.City}");
            Console.WriteLine($"Street: {deserializedPerson.Address.Street}\n");

            // 比较两个对象的差异
            Person anotherPerson = new Person
            {
                Name = "Tom",
                Age = 20,
                Email = "tom@test.com",
                Address = new Address
                {
                    Province = "Guangdong",
                    City = "Shenzhen",
                    Street = "Futian"
                }
            };

            IEnumerable<string> differences = ObjectUtil.Compare(person, anotherPerson);
            Console.WriteLine("比较两个对象的差异:");
            foreach (string difference in differences)
            {
                Console.WriteLine(difference);
            }
        }
    }

    class Person
    {
        public string Name { get; set; }
        public int Age { get; set; }
        public string Email { get; set; }
        public Address Address { get; set; }
    }

    class Address
    {
        public string Province { get; set; }
        public string City { get; set; }
        public string Street { get; set; }
    }
}

# 参考资料

  • MSDN 官方文档:https://docs.microsoft.com/zh-cn/dotnet/api/
  • C# 之道网站:https://www.cnblogs.com/artech/p/- csharp-object-manipulation-utilities.html
  • C# Guide 网站:https://docs.microsoft.com/zh-cn/dotnet/csharp/
  • GitHub 上的 ObjectUtil 工具类:https://github.com/linweijun/ObjectUtil

以上资料涵盖了 C# 中的对象操作、序列化和反序列化、加密和解密、拷贝和转换等方面的内容,对于 ObjectUtil 工具类的实现和使用都提供了很好的参考。

上次更新: 2023/04/26, 22:10:06
XML工具-XmlUtil
反射工具-ReflectUtil

← XML工具-XmlUtil 反射工具-ReflectUtil→

Theme by Vdoing | Copyright © 2019-2024 一个大西瓜 | MIT License | 苏ICP备2023013501号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式