本发明专利技术提供一种silverlight框架下动态创建实体类的方法,该方法是在WCF端,通过序列转化的方法,将silverlight不支持的datatable类型序列转化为silverlight支持的字符string类型,1)首先服务器端把datatable序列化成字符串,压缩后通过WCF传递到silverlight端;2)在silverlight端通过解码解压缩,对解压缩后的字符串进行解析,生成ObservableCollection,其中dynamic是个动态类型,通过ObservableCollection来存放Datatable数据;3)根据解析的信息,动态创建实例并为实例赋值,实现字符string类型的转换,最后返回给silverlight端使用。
【技术实现步骤摘要】
本专利技术涉及计算机应用
,具体地说是。
技术介绍
DataTable是临时保存数据的网格虚拟表,它无须代码就可以简单的绑定数据库。我们知道数据库中存储的是实体表,实体表中有一系列的数据。而DataTable即存储在内存中的表,在持久化到数据库之前,是不会对数据库产生影响的。在项目开发中经常要用到DataTable,如果DataTable使用得当,不仅能使程序简洁实用,而且能够提高性能,达到事半功倍的效果。DataTable也有许多方法,如:1.通过构造函数得到DataTable ;2.通过DataSet获取DataTable ;3.通过DataRow自定义DataTable的结构;4.通过已有的DataTable 得到新的 DataTable ;5.通过 DataAdapter 填充 DataTable ;6.通过 DataRow 数组导入 DataTable。silverlight不支持datatable,通常需要开发人员自己定义实体类,将datatable转化为实体类来提供给silverlight端使用,这样对于系统开发工作量非常大,而且不易于管理。本创新成果是基于提高silverlight开发效率,经过研究实现在silverlight下不定义实体,通过创建动态类型将DataTable数据传送给silverlight使用。
技术实现思路
本专利技术的目的是提供。 本专利技术的目的是按以下方式实现的,在WCF端,通过序列转化的方法,将silverlight不支持的datatable类型序列转化为silverlight支持的字符string类型,具体步骤如下: 1)首先服务器端把datatable序列化成字符串,压缩后通过WCF传递到silverlight端; 2)在silverlight端通过解码解压缩,对解压缩后的字符串进行解析,生成 ObservableCollection〈dynamic>,其中 dynamic 是个动态类型,通过ObservabIeCo11ection<dynamic> 来存放 Datatable 数据; 3)根据解析的信息,动态创建实例并为实例赋值,实现字符string类型的转换,最后返回给silverlight端使用。本专利技术的优异效果:Silverlight技术框架不支持datatable技术,通常需要开发人员自己定义实体类,将datatable转化为实体类来提供给silverlight端使用,这样对于系统开发工作量非常大,而且不易于管理。本专利技术是基于提高silverlight开发效率,实现在silverlight下不定义实体,通过创建动态类型将DataTable数据传送给silverlight使用,解放了开发者自己定义实体类并将datatable转化为实体类提供silverlight端使用的编码工作量,大大提高了开发人员的工作效率。附图说明图1是WCF端实现流程 图2是WCFSilverlight端实现流程图。具体实施例方式参照说明书附图对本专利技术的方法作以下详细地说明。实施例端: 1、首先,将DataTable序列化为string,将表名、列名等信息保存在string串中,部分代码如下:Private static string SerializeDataTable (Datatable dt,int iplndex){Try{StringBuilder strResult=new StringBuilder()String strTableName=,”,;StrtablName=dt.TableName;If (strTableName==,,,,) StrtablName= “TABLENAME—”+iplndex,ToStringO ;strResult.Appdend ( “▲,,);for(int s=0:s〈dt.Columns.Count:s++)strResult.Appdend (dt.Columns[s].ColumnName); 2、将得到字符串进行编码压缩:Byte [] bytes=System.Text.Encoding.UTF8.GetBytes (str);Byte [JbR=Utils.Compress (bytes);Return System.Convert.ToBase64String(bR)Silverlight 端: 首先,将字符串进行解码解压缩,对解压后的字符串解析获得表名,列名,列类型等信息,部分代码如下: String口 listMain=strDe.Split ( );IsttableName[i] =IistMain;DicDy [IsttableName [i] =Istdy [i];strTemp=listMain [I]; string口 listField=strTemp.Split ( );IistFieldNamelst[i]=IistField;DicFieldName[IsttableName=IistFieldType; Split ( ‘▼,);StrTemp=IistField[I];strTemp []listFieldType=strTemp.split ( ‘ET ); IstFieldTypelst[i]=IistFieldType; DicFiledType[IsttbleName.split ( ‘ );For (int j=0:j<FildName.length:j++) 2、根据解析的信息创建动态实例,为实例赋值,部分代码如下:For (int s=0:s<listRow.length:s++) { Dynamic myClass=Activator.CreateInstans(MyTape);String[] col=listRow[s] Split ( ‘ ▼,); IFor (int j=0:j<col.length:j++) { String strTran=col[j];If (FileldType[j]==,,System.String,,) { StrTran=UnStrReplace(col[j]); } Object OData=TranStrTOobject(strTran,FildType[j]);MyClassProperty.SetValue(myClass, ODataj null); }obList.Add (myClass); 3、创建 ObservableCollection〈dynamic> 实例并返回供 silverlight 端调用。 除说明书所述的技术特征外,均为本专业技术人员的已知技术。本文档来自技高网...
【技术保护点】
一种silverlight框架下动态创建实体类的方法,?其特征在于在WCF端,通过序列转化的方法,将silverlight不支持的datatable类型序列转化为silverlight支持的字符string类型,具体步骤如下:1)首先服务器端把datatable序列化成字符串,压缩后通过WCF传递到silverlight端;2)在silverlight端通过解码解压缩,对解压缩后的字符串进行解析,生成ObservableCollection,其中dynamic是个动态类型,通过ObservableCollection来存放Datatable数据;3)根据解析的信息,动态创建实例并为实例赋值,实现字符string类型的转换,最后返回给silverlight端使用。
【技术特征摘要】
1.一种silverlight框架下动态创建实体类的方法,其特征在于在WCF端,通过序列转化的方法,将silverlight不支持的datatable类型序列转化为silverlight支持的字符string类型,具体步骤如下: 1)首先服务器端把datatable序列化成字符串,压缩后通过WCF传递到silverlight端; 2)在silverlight端通过解码解...
【专利技术属性】
技术研发人员:马占涛,
申请(专利权)人:浪潮集团山东通用软件有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。