2012-04-26 96 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