WCF已经出现就为广大开发人员所青睐。它独特的功能能够帮助我们打造一个安全性极强,可跨平台的开发解决方案。在这里我们就为大家详细介绍一下其中一个比较重要的知识,WCF序列化的相关应用。
创新互联于2013年开始,先为酒泉等服务建站,酒泉等地企业,进行企业商务咨询服务。为酒泉企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
最近想做一个项目,考虑到需要根据用户有可能会提供不同类型的数据所以用到了泛型来实现其功能:通过RptParameters的不同方法,加入不同类型的值,并且保存在Dictionary中,由于Dictionary中的第二个参数只能以object来包含不同类型的值,这就需在WCF序列化在进行的时候为其指明KnowTyp属性,由于属性标示要求是具体的类型,而类型只能在用户使用时才能确定,这就出现了矛盾。全部代码如下,问题出在下面代码红色部分,不能正常标示泛型属性。
- [DataContract]
- public class RptValue
{ } - [DataContract]
- public class RptSingleValue
: RptValue - {
- private T _value;
- [DataMember]
- public T Value
- {
- get { return _value; }
- set { _value = value; }
- }
- }
- [DataContract]
- public class RptFromToValue
: RptValue - {
- private T _fvalue;
- [DataMember]
- public T FromValue
- {
- get { return _fvalue; }
- set { _fvalue = value; }
- }
- private T _tvalue;
- [DataMember]
- public T ToValue
- {
- get { return _tvalue; }
- set { _tvalue = value; }
- }
- }
- //[KnownType(typeof(RptSingleValue))]
- //[KnownType(typeof(RptFromToValue))]
- //[KnownType(typeof(RptValue))]
- [DataContract]
- public class RptParameters
- {
- private Dictionary
_datas=new Dictionary (); - [DataMember]
- public Dictionary
Data - {
- get { return _datas; }
- set { _datas = value; }
- }
- public void AddSingleValue
(string name,T value){ - if (!this._datas.ContainsKey(name))
- {
- RptSingleValue
rs = new RptSingleValue (); - rs.Value = value;
- this._datas.Add(name, rs);
- }
- }
- public void AddFromToValue
(string name,T fromValue,T toValue) - {
- if (!this._datas.ContainsKey(name))
- {
- RptFromToValue
rft = new RptFromToValue (); - rft.FromValue = fromValue;
- rft.ToValue = toValue;
- this._datas.Add(name,rft);
- }
- }
- }
上面代码中红色字体部分,是需要完善的地方,如果去掉注释会出现如下图的错误传到不能编译通过,如果不加上,WCF序列化则不能通过。
网站标题:WCF序列化具体应用技巧分享
网页网址:http://www.mswzjz.cn/qtweb/news10/97810.html
攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能