Цепочка вызовов

Когда метод возвращает объект, на этом объекте сразу можно вызвать следующий метод. Это называется цепочкой вызовов.

Два способа написать одно и то же

Через промежуточные переменные — так нагляднее:

var doc = instance.ActiveTab.MainDocument;
var he = doc.FindElementById("input-text");
string value = he.GetValue(false);
project.SendInfoToLog(value);

Через цепочку — короче, но читается тяжелее:

string value = instance.ActiveTab.MainDocument.FindElementById("input-text").GetValue(false);
project.SendInfoToLog(value);

Результат одинаковый. Для обучения лучше использовать первый вариант — с переменными. Цепочки начинают применять когда код уже хорошо читается в голове.

Почему это работает

Каждый шаг возвращает объект, у которого есть свои методы:

instance                          → объект Instance
  .ActiveTab                      → объект Tab
    .MainDocument                 → объект HtmlDocument
      .FindElementById("input-text") → объект HtmlElement
        .GetValue(false)          → строка string

На строке методов больше нет — цепочка заканчивается.

Практика на Sandbox

var doc = instance.ActiveTab.MainDocument;
 
// заполнить поля в Zone 01
doc.FindElementById("input-text").SetValue("Иван", false);
doc.FindElementById("input-email").SetValue("ivan@mail.ru", false);
doc.FindElementById("input-tel").SetValue("+79001234567", false);
doc.FindElementById("textarea-main").SetValue("Комментарий", false);
 
project.SendInfoToLog("поля заполнены");

Здесь каждая строка — короткая цепочка из двух шагов: найти элемент → установить значение.