使用Extension Methods来使IDataReader更加方便
2009-08-25 22:09 Jun1st 阅读(2311) 评论(20) 编辑 收藏 举报今天在逛老赵的Blog的时候,看到了他的常用辅助方法收集一文,想到了自己之前看到的并应用在项目中的一个方法,响应老赵的号召,拿出来晒晒。
在使用DataReader读取数据时,通常会遇到数据可能为Null, 但是又需要转换为如int等其它类型的数据,因此就通常会写这样的代码:
int count = reader[ "count" ] == null ? 0 : int .Parse(reader[ "count" ] + string .Empty); |
而且这样的代码通常会大段大段出现在很多地方。
对于比较懒惰的程序员来说,这样的RY(repeat yourself)是一件很痛苦的事情,因此是时候来想个更好的方法了。这里首先想到的就是Extension Method。
SafeRead代码
public static T SafeRead<T>( this IDataReader reader, string fieldName, T defaultValue) { try { int ordinal = reader.GetOrdinal(fieldName); if (reader.IsDBNull(ordinal)) //if column "fieldName" doesn't exist, will throw an exception return defaultValue; return (T)Convert.ChangeType(reader[ordinal], defaultValue.GetType()); } catch (InvalidCastException) { return defaultValue; } } |
很简单的几句代码,有了这个方法之后,在使用DataReader时,就可以通过SafeRead来读取数据了
int count2 = reader.SafeRead< int >( "count" , 0); |
简单但是实用的代码,希望对大家在项目中有所帮助。
最后附上老赵的常用辅助方法收集
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述