可変数の引数を持つ XSLT 拡張関数を実装しようとしています。パラメータを配列、params 配列、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' には、3 つのパラメーターを持つ一致する 'Test' メソッドが含まれていません。
concat の入力が何らかの形で XPathNodeIterator に変換されていると思いますが、その方法がわかりません。助言がありますか?