Как передать значение метода в функцию

347
15 августа 2017, 12:12

Есть функция.

   public void Func()
    {
        var publicTL = new WebClient().DownloadString(@"link");
        var statuses = DynamicJson.Parse(publicTL);
        Label1.Text = statuses.data.hashRate.ToString();
    }

Хочу переделать ее, так что бы ее можно было вызвать примерно так Label1.Text = Func(data.hashRate) , т.е. я хочу передать только параметры метода. Я не понимаю даже какой тип будет функция принимать, возвращать будет строку. Как это можно реализовать? PS DynamicJson библиотека для json парсинга.

Answer 1

Нужно получить некое значение, распарсить его и вернуть одно из его полей. Для этого опишем метод GetHashRate, который будет принимать на вход строку с адресом и возвращать строку с хэшрейтом.
UPD. Мы хотим возвращать не только HashRate, но и любое другое свойство. Для этого добавим еще один параметр propertyName. В нём будем передавать требуемое свойство, благо используемая библиотека позволяет использовать индексаторы:

    public static string GetData(string link, string propertyName)
    {
        var publicTL = GetJson(link);
        var statuses = DynamicJson.Parse(publicTL);
        return statuses["data"][propertyName].ToString();
    }
    private static string GetJson(string link)
    {
        return "{\"status\":1,\"data\":{\"hashRate\":\"119.9 MH/s\",\"block\":166479}}";
    }

Тут я вынес получение данных в отдельный метод (данные с Вашей ссылки не являются валидным JSON-объектом, т.к. это HTML-страница). Если будете использовать - не забудьте вернуть получение данных по ссылке.
Потом мы можем использовать результат того метода:

 Label1.Text = GetData(link, "hashRate");

Или для проверки в консоли:

static void Main(string[] args)
{
    Console.WriteLine(GetHashRate(@"http://bin.codingislove.com/giruderiwo.json", "hashRate"));
    Console.WriteLine(GetHashRate(@"http://bin.codingislove.com/giruderiwo.json", "block"));
    Console.ReadKey();
}
READ ALSO
ввод и вывод float аргументов через Main

ввод и вывод float аргументов через Main

Столкнулся с интересным и не совсем понятным поведением компилятора

249
c# vlc activex добавить в сборку

c# vlc activex добавить в сборку

Добавил Vlc ActiveX в проект, как com элементБиблиотеки подцепились работают, при установки проекта поставил добавлять dll, которые относятся к этому...

167
Заполнение DataGridView через DataTable. При применении фильтрации или сортировки сбрасываются настройки строк DataGridView

Заполнение DataGridView через DataTable. При применении фильтрации или сортировки сбрасываются настройки строк DataGridView

Для применения фильтрации на самом контролле (не в модели данных) использую DataTable для создания таблицы и DataView

472
Можно ли залить уже готовый проект на .NET Fiddle? [требует правки]

Можно ли залить уже готовый проект на .NET Fiddle? [требует правки]

Как залить свою программу наNET Fiddle ? Или там можно только что-то писать онлайн?

147