Десерилизация объекта типа 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д