Я пытаюсь реализовать функцию расширения XSLT с переменным числом аргументов.Если я объявляю параметр как массив, массив параметров, ICollection и т. Д., Я получаю следующую ошибку (где TYPE_NAME - используемый тип):
System.Xml.Xsl.XslTransformException: параметры функции расширения иливозвращаемые значения с типом Clr 'TYPE_NAME' не поддерживаются.
Но Umbraco имеет встроенную функцию concat
, которая работает таким образом.Я посмотрел на исходный код Umbraco, и он выглядит так:
public static string concat(XPathNodeIterator nodeset){...}
, а в XSLT он называется так:
concat('a', 'b', 'c')
Когда я пробую подобный подход и объявляю свою функцию следующим образом:
public static string Test(XPathNodeIterator nodeset){...}
и вызываем его в XSLT таким же образом:
Custom:Test('a', 'b', 'c')
Я получаю следующую ошибку:
System.Xml.Xsl.XslTransformException: объект расширения «urn: Custom» не содержит соответствующий метод «Test», который имеет 3 параметра.
Я предполагаю, что ввод concat каким-то образом преобразован в XPathNodeIterator, но я не могучтобы понять, как.Есть предложения?