Да, это, вероятно, самый быстрый способ сделать это, потому что 'invokescript' просто нужно дать имя глобальной функции. Таким образом, после того, как функции углублены в некоторые структуры и все еще можно вызывать их через InvokeScript «более красиво», вам, например, придется написать одну обертку GLOBAL (диспетчер будет лучшее название), аналогично:
function callme(what, args) {
var actualfunction = eval(what); // or any other way to parse the 'what' and get a function
return actualfunction(args);
}
и позже назовите это:
от JS:
callme("$.city.venue.onVenueSelected", ..args..)
(но я действительно не знаю, почему вы могли бы позвонить из JS:))
и из CS:
browser.InvokeScript("callme", new string[]{ "$.city.venue.onVenueSelected", ..args.. })
таким образом, я думаю, вы могли бы передавать объекты как аргументы функции напрямую, без их строкового выражения
.. но, по моему опыту, в> 80% случаев вам просто нужно передать несколько простых чисел и строк или флагов настройки, так что все эти хлопоты, как правило, просто раздувание кода