|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
有专家说:java不是跨平台,java就是平台,这很好的定义了java的特点。有了java,你只需要等待java平台在新平台上移植。这还不错吧!只是,java不是一个平台,而是多个平台。你需要在这个java平台移植到另一个java平台。汇合|静态呃```花了一夜工夫,终究弄出来了怎样经由过程反射,从DataReader将数据添补到数据实体泛型汇合的静态办法.
//Kchen.Core.BaseBusinessObject为通用数据实体类,此处仅为限制T所承继的范例
publicstaticIList<T>FillDataListGeneric<T>(System.Data.IDataReaderreader)whereT:Kchen.Core.BaseBusinessObject
{
//实例化一个List泛型汇合
IList<T>DataList=newList<T>();
while(reader.Read())
{
//因为是是未知的范例,以是必需经由过程Activator.CreateInstance<T>()办法来根据T的范例静态创立数据实体工具
TRowInstance=Activator.CreateInstance<T>();
//经由过程反射获得工具一切的Property
foreach(PropertyInfoPropertyintypeof(T).GetProperties())
{
//BindingFieldAttribute为自界说的Attribute,用于与数据库字段举行绑定
foreach(BindingFieldAttributeFieldAttrinProperty.GetCustomAttributes(typeof(BindingFieldAttribute),true))
{
try
{
//获得以后数据库字段的按次
intOrdinal=reader.GetOrdinal(FieldAttr.FieldName);
if(reader.GetValue(Ordinal)!=DBNull.Value)
{
//将DataReader读掏出来的数据添补到工具实体的属性里
Property.SetValue(RowInstance,Convert.ChangeType(reader.GetValue(Ordinal),Property.PropertyType),null);
}
}
catch
{
break;
}
}
}
//将数据实体工具add到泛型汇合中
DataList.Add(RowInstance);
}
returnDataList;
}
挪用的时分利用以下代码
//伪代码OleDbDataReader_ds=创立一个OleDbDataReader
IList<Product>_result=Kchen.Utilities.FillDataListGeneric<Product>(_ds);
此静态办法经由过程一个实体范例和DateReader,疾速的将数据添补到数据实体泛型汇合中.
因为各系统的API不同,代码调用API编写程序就会遇到很多不兼容的地方,比如Java改写后的Serv-U就不能在手机上执行,手机的游戏也不能直接在微机上执行。 |
|