使用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 加持,快人一步