2013-05-29 7 views
2

Я просто работал над простой программой, которая использовала RestSharp для отправки метода POST на машину, которая позволяет оси движения.Разбор с JSON в C#

var client = new RestClient("http://10.101.2.216/"); 
var request = new RestRequest("/api/task/library/command", Method.POST); 
request.AddBody(new { command = "Enable X"}); 

... 

Мне было интересно, что на самом деле происходит на этой последней строке. Какой тип переменной создается? Что на самом деле делает компилятор? Другими словами, как это преобразуется в JSON и почему оно работает?

+0

RestSharp будет сериализовать этот анонимный класс на строку '{" command ":" Enable X "}' – I4V

+0

Вы уверены, что используете JSON? По умолчанию запрос будет использовать сериализацию XML. Вот источник для RestRequest: https://github.com/restsharp/RestSharp/blob/master/RestSharp/RestRequest.cs – Chris

+0

Итак, тип переменной анонимный? а затем компилятор преобразует его в строку? – Nealon

ответ

4

C# 4.0 представляет анонимные типы. Эти типы не определяются каким-либо конкретным типом. Для построения анонимного типа мы используем синтаксис new { ... }. Что RestSharp на самом деле делает, используя Reflection для сериализации типа в JSON или XML.

+0

Я бы дал вам вырез, но у меня еще нет репутации, ха-ха. Спасибо, хотя – Nealon

+0

@Nealon приветствуются. –