新聞中心
這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
WCF序列化具體應用技巧分享
WCF已經(jīng)出現(xiàn)就為廣大開發(fā)人員所青睞。它獨特的功能能夠幫助我們打造一個安全性極強,可跨平臺的開發(fā)解決方案。在這里我們就為大家詳細介紹一下其中一個比較重要的知識,WCF序列化的相關(guān)應用。

創(chuàng)新互聯(lián)于2013年開始,先為酒泉等服務建站,酒泉等地企業(yè),進行企業(yè)商務咨詢服務。為酒泉企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務解決您的所有建站問題。
最近想做一個項目,考慮到需要根據(jù)用戶有可能會提供不同類型的數(shù)據(jù)所以用到了泛型來實現(xiàn)其功能:通過RptParameters的不同方法,加入不同類型的值,并且保存在Dictionary中,由于Dictionary中的第二個參數(shù)只能以object來包含不同類型的值,這就需在WCF序列化在進行的時候為其指明KnowTyp屬性,由于屬性標示要求是具體的類型,而類型只能在用戶使用時才能確定,這就出現(xiàn)了矛盾。全部代碼如下,問題出在下面代碼紅色部分,不能正常標示泛型屬性。
- [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);
- }
- }
- }
上面代碼中紅色字體部分,是需要完善的地方,如果去掉注釋會出現(xiàn)如下圖的錯誤傳到不能編譯通過,如果不加上,WCF序列化則不能通過。
網(wǎng)站名稱:WCF序列化具體應用技巧分享
轉(zhuǎn)載源于:http://m.fisionsoft.com.cn/article/cohhjio.html


咨詢
建站咨詢
