2012-04-26 2 views
0

안녕하세요, HTTP 응답에서 스트림이 반환했습니다. obj를 Object (obj)로 deserialize하고 obj의 형식을 MyObject 또는 string 또는 double로 확인하려고했습니다. 절차가 잘못되었거나 개념이 잘못되었습니다. 도와주세요.Json deserialized 스트림 반환 형식

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 

예 : 제공된 표현이 아닌 null의 경우 이와는 대조적으로

 Derived d = new Derived(); 

     Base b = d as Base; 

is 표현식이 true로 평가하고, 제공된 개체가 제공으로 캐스팅 될 수있다 예외를 발생시키지 않고 유형을 지정하십시오.

is 키워드는식이 항상 참이거나 항상 거짓 인 것으로 알려져 있지만 일반적으로 런타임에 형식 호환성을 평가할 때 컴파일 타임 경고를 발생시킵니다. 여기

is을 사용할 수있는 방법은 다음과 같습니다 필요에 따라

if (obj is MyObject) 
{ 
} 
+0

Done.Is이 목적을 봉사했다. – Rain

+0

이번이 처음 인 이래로 팁 : 투표를하고 질문에 대한 답변을 수락해야합니다. 이것은 당신의 시간 등을 감사하는 당신의 미래의 질문에 대답하고 싶은 사람들에게 전할 것입니다 :) –

+0

죄송합니다. dint는 그것을 알고있다! – Rain