最近在做个小项目,时间比较充足,很想努力做“经典”点。看到petshop4.0的架构真得是太经典,难免想深究深究了,不啰嗦了,这篇文章是说范型的嘛。petshop里反射机制、范型编程几乎到处都是,范型是干吗的呢?有什么好处呢?
范型是高效的、是更好发代码复用、能赋予代码更强的类型安全、包含了更清晰的约束的。这么多好处,讲讲范型咋定义的吧?范型就是通过参数化类型实现在同一份代码上操作多种数据类型。范型编程是一种编程范式,利用“参数化类型”将类型抽象化,从而实现更灵活的复用。C#的范型支持的包括类、结构、接口、委托四种范型类型。
这个是最近项目里DAL里的一个方法,过去比较喜欢使用强大的DataSet来处理Query出来的数据,这回打算用范式编程了。其实都是可以的,DataSet的强大和易用性更是很轻松的让很多开发人员接受。Ilist接口很多地方能被很好的用到。显示数据的时候直接把它给数据显示控件的DataSource就可以了,很方便。
范型是高效的、是更好发代码复用、能赋予代码更强的类型安全、包含了更清晰的约束的。这么多好处,讲讲范型咋定义的吧?范型就是通过参数化类型实现在同一份代码上操作多种数据类型。范型编程是一种编程范式,利用“参数化类型”将类型抽象化,从而实现更灵活的复用。C#的范型支持的包括类、结构、接口、委托四种范型类型。
这个是最近项目里DAL里的一个方法,过去比较喜欢使用强大的DataSet来处理Query出来的数据,这回打算用范式编程了。其实都是可以的,DataSet的强大和易用性更是很轻松的让很多开发人员接受。Ilist接口很多地方能被很好的用到。显示数据的时候直接把它给数据显示控件的DataSource就可以了,很方便。
/**/
/// <summary>
/// Query for all user info.
/// The results will include all user info.
/// </summary>
/// <returns></returns>
public static IList < DE.User > GetUsersBySearch() ... {
IList<DE.User> usersBySearch = new List<DE.User>();
using ( SqlDataReader sdr = SqlHelper.ExecuteReader( SqlHelper.ConnectionString, CommandType.StoredProcedure, "MS_User_GetUsersBySearch" ) ) ...{
while ( sdr.Read() ) ...{
DE.User user = new DE.User( sdr.GetInt32( 0 ), sdr.GetBoolean( 1 ), sdr.GetDateTime( 2 ), sdr.GetDateTime( 3 ), sdr.GetString( 4 ),
sdr.GetString( 5 ), sdr.GetString( 6 ), sdr.GetString( 7 ), sdr.GetString( 8 ), sdr.GetString( 9 ) );//, sdr.GetString(10));
usersBySearch.Add( user );
}
}
return usersBySearch;
}
/// Query for all user info.
/// The results will include all user info.
/// </summary>
/// <returns></returns>
public static IList < DE.User > GetUsersBySearch() ... {
IList<DE.User> usersBySearch = new List<DE.User>();
using ( SqlDataReader sdr = SqlHelper.ExecuteReader( SqlHelper.ConnectionString, CommandType.StoredProcedure, "MS_User_GetUsersBySearch" ) ) ...{
while ( sdr.Read() ) ...{
DE.User user = new DE.User( sdr.GetInt32( 0 ), sdr.GetBoolean( 1 ), sdr.GetDateTime( 2 ), sdr.GetDateTime( 3 ), sdr.GetString( 4 ),
sdr.GetString( 5 ), sdr.GetString( 6 ), sdr.GetString( 7 ), sdr.GetString( 8 ), sdr.GetString( 9 ) );//, sdr.GetString(10));
usersBySearch.Add( user );
}
}
return usersBySearch;
}