.NET:インスタンスメソッドとインスタンスフィールド

www.altova.com このトピックを印刷 前のページ 1つ上のレベル 次のページ

ホーム >  付録 > XSLT と XPath/XQuery 関数 > その他の拡張関数 > .NET 拡張関数
 >

.NET:インスタンスメソッドとインスタンスフィールド

インスタンスメソッドには、メソッド呼び出しの第一引数として .NET オブジェクトが渡されます。通常この .NET オブジェクトは、拡張関数(例えばコンストラクター呼び出し)またはスタイルシートパラメーター/変数により作成されます。以下に XSLT の例を示します:

 

<xsl:stylesheet version="2.0"

   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

   xmlns:xs="http://www.w3.org/2001/XMLSchema"

   xmlns:fn="http://www.w3.org/2005/xpath-functions">

   <xsl:output method="xml" omit-xml-declaration="yes"/>

   <xsl:template match="/">

      <xsl:variable name="releasedate"

         select="date:new(2008, 4, 29)"

         xmlns:date="clitype:System.DateTime"/>

      <doc>

         <date>

            <xsl:value-of select="date:ToString(date:new(2008, 4, 29))"

               xmlns:date="clitype:System.DateTime"/>

         </date>

         <date>

            <xsl:value-of select="date:ToString($releasedate)"

               xmlns:date="clitype:System.DateTime"/>

         </date>

      </doc>

   </xsl:template>

</xsl:stylesheet>

 

                 

上の例では、System.DateTime コンストラクター (new(2008, 4, 29)) が、System.DateTime 型の .NET オブジェクトの作成に使用されます。このオブジェクトは、最初に releasedate 変数の値として、次に System.DateTime.ToString() メソッドの引数として作成されます。System.DateTime.ToString() インスタンスメソッドは、System.DateTime コンストラクターの (new(2008, 4, 29)) における引数として2度呼び出されます。これらインスタンスにおいて releasedate 変数が .NET オブジェクトを取得するのに使用されます。

 

 

インスタンスメソッドとインスタンスフィールド

インスタンスメソッドとインスタンスフィールドの違いは理論的なものです。インスタンスメソッドでは .NET オブジェクトが直接引数に渡され、インスタンスフィールドではパラメーターや変数が(.NET オブジェクトそのものを含めることはできるものの)代わりに渡されます。例えば上の例では、releasedate 変数に .NET オブジェクトが含まれており、この変数が2番目の date 要素コンストラクターにて ToString() の引数として渡されます。そのため、最初の date 要素にある ToString() インスタンスがインスタンスメソッドであるのに対し、2番目はインスタンスフィールドとしてみなされます。両方のインスタンスで求められる結果は等価です。

 


(C) 2019 Altova GmbH