当前位置: 首页 > news >正文

探索 C# 常用第三方库与框架

在 C# 开发中,第三方库和框架极大地提高了开发效率和代码质量。通过这些库,开发者可以快速处理 JSON 数据、简化对象映射、记录日志、以及高效地与数据库交互。本文将介绍四个常用的 C# 第三方库:Newtonsoft.JsonAutoMapperNLog/Serilog 以及 Dapper,并讲解它们的功能和使用方式。


1. Newtonsoft.Json 库

Newtonsoft.Json 是 C# 中处理 JSON 的最流行库之一,它为 JSON 序列化、反序列化、以及复杂的 JSON 操作提供了简洁的 API。无论是处理简单的数据结构还是嵌套对象,Newtonsoft.Json 都能够快速高效地进行操作。

安装 Newtonsoft.Json

你可以通过 NuGet 安装这个库:

Install-Package Newtonsoft.Json

序列化与反序列化

  • 序列化 是将 C# 对象转换为 JSON 格式的过程。
  • 反序列化 是将 JSON 数据转换为 C# 对象的过程。
using Newtonsoft.Json;public class Person
{public string Name { get; set; }public int Age { get; set; }
}var person = new Person { Name = "Alice", Age = 30 };// 序列化对象为 JSON 字符串
string json = JsonConvert.SerializeObject(person);
Console.WriteLine(json);  // 输出:{"Name":"Alice","Age":30}// 反序列化 JSON 字符串为对象
var deserializedPerson = JsonConvert.DeserializeObject<Person>(json);
Console.WriteLine(deserializedPerson.Name);  // 输出:Alice

处理复杂 JSON

Newtonsoft.Json 还支持处理复杂的 JSON 对象和嵌套结构。通过 JObject,你可以动态解析 JSON 数据。

var json = @"{ 'Name': 'Alice', 'Details': { 'Age': 30, 'Country': 'USA' } }";
var jsonObject = JObject.Parse(json);
Console.WriteLine(jsonObject["Details"]["Country"]);  // 输出:USA

2. AutoMapper

AutoMapper 是一个对象-对象映射器,简化了模型之间的转换过程。在开发中,通常需要将一个对象的属性映射到另一个对象,尤其是在处理 DTO(数据传输对象)和数据库实体时。AutoMapper 可以帮助你自动完成这些映射,减少手动编写代码的麻烦。

安装 AutoMapper

使用 NuGet 安装 AutoMapper:

Install-Package AutoMapper

设置与使用 AutoMapper

using AutoMapper;public class Source
{public string Name { get; set; }public int Age { get; set; }
}public class Destination
{public string FullName { get; set; }public int Age { get; set; }
}var config = new MapperConfiguration(cfg =>
{cfg.CreateMap<Source, Destination>().ForMember(dest => dest.FullName, opt => opt.MapFrom(src => src.Name));
});var mapper = config.CreateMapper();
var source = new Source { Name = "Alice", Age = 30 };
var destination = mapper.Map<Destination>(source);Console.WriteLine(destination.FullName);  // 输出:Alice
Console.WriteLine(destination.Age);  // 输出:30

在这个例子中,我们使用 CreateMap<Source, Destination> 定义了从 Source 到 Destination 的映射规则,并通过 Map 方法将源对象映射到目标对象。


3. NLog/Serilog 日志记录

日志记录是应用程序开发中非常重要的部分,它帮助开发者监控和调试应用程序。NLog 和 Serilog 是两个流行的 C# 日志记录库,它们提供了灵活的配置和强大的日志功能。你可以根据需求选择其中任意一个进行日志记录。

安装 NLog

使用 NuGet 安装 NLog:

Install-Package NLog

使用 NLog

using NLog;public class Program
{private static readonly Logger Logger = LogManager.GetCurrentClassLogger();public static void Main(string[] args){Logger.Info("Application started.");try{// 模拟应用程序逻辑throw new Exception("Something went wrong");}catch (Exception ex){Logger.Error(ex, "An error occurred");}}
}

通过 NLog 的配置文件 nlog.config,你可以控制日志输出的格式、文件路径等。

安装 Serilog

使用 NuGet 安装 Serilog:

Install-Package Serilog

使用 Serilog

using Serilog;public class Program
{public static void Main(string[] args){Log.Logger = new LoggerConfiguration().WriteTo.Console().WriteTo.File("logs/myapp.txt", rollingInterval: RollingInterval.Day).CreateLogger();Log.Information("Application started.");Log.CloseAndFlush();}
}

Serilog 支持结构化日志,允许记录详细的对象信息,提供更好的日志分析体验。


4. Dapper 微型 ORM

Dapper 是一个轻量级的微型 ORM,它提供了高效的数据库查询功能,并保留了 SQL 的灵活性。Dapper 是执行 SQL 查询和映射数据库结果集到 C# 对象之间的桥梁,适用于不需要复杂对象关系映射的应用场景。

安装 Dapper

通过 NuGet 安装 Dapper:

Install-Package Dapper

使用 Dapper

using System.Data.SqlClient;
using Dapper;public class Product
{public int ProductId { get; set; }public string ProductName { get; set; }public decimal Price { get; set; }
}var connectionString = "your_connection_string";
using (var connection = new SqlConnection(connectionString))
{var products = connection.Query<Product>("SELECT * FROM Products").ToList();foreach (var product in products){Console.WriteLine($"{product.ProductName}: {product.Price}");}
}

在这个示例中,我们通过 Dapper 的 Query 方法执行 SQL 查询,并将结果映射到 Product 对象。Dapper 提供了简洁的 API,适合需要直接编写 SQL 语句的开发者使用。


结论

C# 的第三方库和框架为开发者提供了丰富的工具,帮助简化开发过程并提升代码效率。通过使用 Newtonsoft.Json 来处理 JSON 数据,AutoMapper 来自动进行对象映射,NLog/Serilog 来进行日志记录,以及 Dapper 来快速访问数据库,开发者可以专注于业务逻辑,减少重复代码的编写。

  • Newtonsoft.Json 是处理 JSON 数据的强大工具,简化了序列化与反序列化操作。
  • AutoMapper 提供了自动对象映射的功能,减少了手动编写映射代码的麻烦。
  • NLog/Serilog 提供了灵活的日志记录功能,帮助开发者监控和调试应用程序。
  • Dapper 是高效的微型 ORM,适合需要直接控制 SQL 查询的场景。

通过掌握这些常用的第三方库和框架,开发者可以更加高效地构建可靠、可维护的 C# 应用程序。如果你有任何问题或者需要更多的示例,欢迎继续探讨!


这篇博客介绍了常用的 C# 第三方库和框架。如果你有任何疑问或需要更多详细示例,欢迎联系我!

http://www.lryc.cn/news/460208.html

相关文章:

  • NodeJS GRPC简单的例子
  • 无人机之三维航迹规划篇
  • 风格迁移-StyTr 2 : Image Style Transfer with Transformers
  • 上百种【基于YOLOv8/v10/v11的目标检测系统】目录(python+pyside6界面+系统源码+可训练的数据集+也完成的训练模型)
  • 记录搜罗到的Matlab 对散点进行椭圆拟合
  • 分享我最近使用《柬埔寨语翻译通》App的体验,不会说高棉语也能去柬埔寨旅游,畅通无阻!
  • 文本语义检索系统的搭建过程,涵盖了召回、排序以及Milvus召回系统、短视频推荐等相关内容
  • redis在项目中运用(基础)
  • libaom 源码分析系列:svc_encoder_rtc.cc 文件
  • MySQL备份和还原,用mysqldump、mysql和source命令来完成
  • MySQL Server、HeidiSQL(MySQL 数据库工具)
  • 矩阵相关算法
  • 微信小程序-封装通用模块
  • Modnet 人像抠图(论文复现)
  • 利用session机制造测试账号,无需前端也可以测试后端接口
  • JAVA_18
  • Linux升级openssl版本
  • 多态对象的存储方案小结
  • Linux 之 nano 编辑器
  • zipkin启动脚本并指定mysql数据存储
  • 超越GPT-4的视觉与文本理解能力,开源多模态模型领跑者 - Molmo
  • 输入输出--I/O流【C++提升】()
  • Maven 中央仓库地址推荐
  • Fastgpt本地化部署 - 以MAC为例
  • SpringBoot框架下购物推荐网站的设计模式与实现
  • Apache Flink 和 Apache Kafka
  • Excel中Ctrl+e的用法
  • 07-Cesium动态处理线条闪烁材质的属性
  • postgresql16分区表解析
  • 文字识别解决方案-OCR识别应用场景解析