украсить сериализованным классом для генерации токена в C # - PullRequest
0 голосов
/ 13 ноября 2018

Мне нужно подготовить запрос на создание токена поверх остальных API. Я уже сделал это и отлично работает, но, как вы догадываетесь, это выглядит как очень грязный способ справиться с этим.

          var dict = new Dictionary<string, string>();
            dict.Add("Parameter1", tokenData.par1);
            dict.Add("Parameter2", tokenData.par2);

            using (HttpClient cliesssnt = new HttpClient())
            {
                cliesssnt.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

                var token =new FormUrlEncodedContent(dict);
                HttpResponseMessage respossnse = 
                cliesssnt.PostAsync("https://someurl", token ).Result;
                var result= respossnse.Content.ReadAsStringAsync().Result;
            }

Класс:

public class ERaporAuthVM
{
    [JsonProperty("Parameter1")]
    public int par1 { get; set; }
    [JsonProperty("Parameter2")]
    public string par2 { get; set; }  
}

Я бы хотел сделать что-то подобное, чтобы подготовить этот токен;

var token = JsonSerializer<ERaporAuthVM>(tokenData);

но как я могу заставить это работать таким образом?

1 Ответ

0 голосов
/ 13 ноября 2018
public FormUrlEncodedContent JsonSerializer<T>(T input) where T : class
{
    var result = new Dictionary<string, string>();
    foreach(var prop in input.GetType().GetProperties())
    {
        var value = prop.GetValue(input);
        //to-do: get name from JsonPropertyAttribute if exists
        result.Add(prop.Name, value == null ? null : value.ToString());
    }
    return new FormUrlEncodedContent(result);
}

Использование:

var token = JsonSerializer(tokenData);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...