2012-04-26 91 views
0

嗨,我有一個從http響應返回的流。我已經將它反序列化爲Object(obj),並希望檢查obj的類型爲MyObject或string或double。程序錯誤或我的概念錯誤。請幫忙。Json反序列化流返回類型

DataContractJsonSerializer obj = new DataContractJsonSerializer(typeof(Object)); 
     Object Obj = obj.ReadObject(_stream) as Object; 
     Product p = new Product(); 
     List<string> ls = new List<string>(); 
     List<DisplayProduct> displs = new List<DisplayProduct>(); 

     if (Obj.Equals(p)) 
      Console.WriteLine("PRODUCT"); 
     else if (Obj.Equals(ls)) 
      Console.WriteLine("LIST OF STRING"); 
     else 
      Console.WriteLine("DISPLAY PRODUCT LIST"); 

回答

0

雨,

你可以用「是」或「爲」關鍵字,而不是做你想要做的事。

不同之處在於as運算符就像是一個強制操作。但是,如果轉換不可行,則返回null而不是引發異常。考慮以下表達式:

expression as type 

除了僅對錶達式求值一次之外,它與以下表達式等價。 as的你將如何使用

expression is type ? (type)expression : (type)null 

例子:

 Derived d = new Derived(); 

     Base b = d as Base; 

相比之下,is表達式的值爲true,如果提供的表達式非空,並且所提供的對象可以轉換爲提供鍵入而不會引發異常。

is關鍵字會導致編譯時警告,如果已知表達式始終爲真或始終爲false,但通常會在運行時評估類型兼容性。

下面是如何使用is

if (obj is MyObject) 
{ 
} 
+0

Done.Is服務的目的是必需的。 – Rain 2012-04-26 21:58:59

+0

只是一個提示,因爲這是你第一次:你應該投票並接受回答你的問題的答案。這將傳達給那些想回答你未來的問題,你欣賞他們的時間等:) :) – 2012-04-26 22:04:49

+0

哎呀..對不起。力德知道! – Rain 2012-04-27 00:17:19