Десерилизация объекта типа object в известный тип - C#

Узнай цену своей работы

Формулировка задачи:

Всем привет. Никогда бы не думал что спрошу такое , но у меня не получается :0 И так есть клиент сервер с пересылкой по шине сообщения. На клиенте создаем сообщение и отсылаем в шину:
class M {
  public List<object> params = new List<object>();
}
 
var m = new M { params = new List<object>{
          Guid.NewGuid(),
          111,
          "mystring222",
          new MyClass()
}};
 
var mjson = JsonConvert.SerializeObject(m);
И вот проблема, я не могу десерилизовать эти параметры зная их типы!!! Подскажите как это сделать?
M m = JsonConvert.DeserializeObject<M>(m);
 
List<object> objectWithRightTypes = new List<object>();
finalObjects.Add(  JsonConvert.DeserializeObject(m.params[0], typeof(Guid));  );   //   <---- Вот тут основная проблемная строка, как это сделать? 
if( objectWithRightTypes[0].GetType() == typeof(Guid)  ){
     Console.WriteLine( "Ура! Мы это сделали!!! Спасибо тебе userName! :) " );
}

Решение задачи: «Десерилизация объекта типа object в известный тип»

textual
Листинг программы
M m = JsonConvert.DeserializeObject<M>(mjson);
  Console.WriteLine( m.params[0].GetType().Name  )  // string , хотя это GUID
  Console.WriteLine( m.params[1].GetType().Name  )  // string , хотя это int
  Console.WriteLine( m.params[2].GetType().Name  )  // string , да это string
  Console.WriteLine( m.params[3].GetType().Name  )  // JObject , хотя это MyClass

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.2 из 5
Похожие ответы