ExpressionBuilder クラスとは? わかりやすく解説

ExpressionBuilder クラス

メモ : このクラスは、.NET Framework version 2.0新しく追加されたものです。

ページ解析中に式を評価します

名前空間: System.Web.Compilation
アセンブリ: System.Web (system.web.dll 内)
構文構文

Public MustInherit Class
 ExpressionBuilder
Dim instance As ExpressionBuilder
public abstract class ExpressionBuilder
public ref class ExpressionBuilder abstract
public abstract class ExpressionBuilder
public abstract class ExpressionBuilder
解説解説

ExpressionBuilder クラスは、AppSettingsExpressionBuilder クラスなどの式ビルダ基本クラスです。式ビルダは、ページ解析中にコード式を作成します

ビルダは、宣言式を解析しコントロール プロパティバインドされている値を取得するコード作成しますコンパイルなしのシナリオにおいて、コンパイルなし機能サポートするビルダは、実行時に式を評価します

ページ パーサーは、文字列 <%$ %>区切られた式を見つけると、その文字列プレフィックス基づいて式の式ビルダ作成しますプレフィックスは、文字列のうちコロン (:) の左側部分です。たとえば、パーサーは、文字列 <%$ ConnectionStrings:MessageDB %> を見つけると、ConnectionStringsExpressionBuilder オブジェクト作成しますプレフィックスは、Web.config ファイルの ExpressionBuilders セクションで式ビルダ関連付けられています。

宣言式の右側部分は、評価のために式ビルダ渡されます。ページと共にコンパイルされるコード生成するには、GetCodeExpression メソッドオーバーライドます。

コンパイルされないページ上でカスタムビルダアクティブにする場合も、EvaluateExpression メソッドオーバーライドして、式の結果を表すオブジェクト返す必要がありますまた、SupportsEvaluate プロパティオーバーライドして、カスタムビルダコンパイルなしページサポートすることを示す必要があります

エディタ実装すると、コントロール プロパティ関連付けられている式を選択および評価するために使用するプロパティメソッドセットを、設計時に定義できます。式エディタは、式ビルダ上でクラス レベルメタデータ使用してマークされます。詳細については、「ExpressionEditor」を参照してください

継承時の注意 ExpressionBuilder クラスから継承する場合は、GetCodeExpression メソッドオーバーライドする必要があります

使用例使用例

ExpressionBuilder 抽象クラス実装して、カスタムビルダビルドする方法次のコード例示します。この ExpressionBuilder 実装は、式に渡される評価済みステートメント返します。この例を実行するには、あらかじめカスタムビルダを Web.config ファイル登録しておく必要があります最初コード例に、カスタムビルダを Web.config ファイル登録する方法示します

<configuration>
    <system.web>
       <compilation>
          <expressionBuilders>
              <add expressionPrefix="MyCustomExpression"
               type="MyCustomExpressionBuilder"/>
          </expressionBuilders>
       </compilation>
    </system.web>
</configuration>

2 番目のコード例に、.aspx ファイル含まれている式を参照する方法示します

<asp:Label ID="Label1" runat="server" 
Text="<%$ MyCustomExpression:Hello, world! %>" />

3 番目のコード例に、ExpressionBuilder派生使用してカスタマイズされた式ビルダ開発する方法示します。このコード例実行するには、クラスを App_Code フォルダ配置する必要があります

Imports System
Imports System.CodeDom
Imports System.Web.UI
Imports System.ComponentModel
Imports System.Web.Compilation
Imports System.Web.UI.Design

' Apply ExpressionEditorAttributes to allow the 
' expression to appear in the designer.
<ExpressionPrefix("MyCustomExpression")> _
<ExpressionEditor("MyCustomExpressionEditor")>
 _
Public Class MyExpressionBuilder
    Inherits ExpressionBuilder
    ' Create a method that will return the result 
    ' set for the expression argument.
    Public Shared Function
 GetEvalData(ByVal expression As String,
 _
       ByVal target As Type, ByVal
 entry As String) As Object
        Return expression
    End Function

    Public Overrides Function
 EvaluateExpression(ByVal target As Object,
 _
       ByVal entry As BoundPropertyEntry, ByVal
 parsedData As Object, _
       ByVal context As ExpressionBuilderContext)
 As Object
        Return GetEvalData(entry.Expression, target.GetType(),
 entry.Name)
    End Function

    Public Overrides Function
 GetCodeExpression(ByVal entry _
       As BoundPropertyEntry, ByVal parsedData
 As Object, ByVal context
 _
       As ExpressionBuilderContext) As CodeExpression
        Dim type1 As Type = entry.DeclaringType
        Dim descriptor1 As PropertyDescriptor
 = _
           TypeDescriptor.GetProperties(type1)(entry.PropertyInfo.Name)
        Dim expressionArray1(2) As CodeExpression
        expressionArray1(0) = New CodePrimitiveExpression(entry.Expression.Trim())
        expressionArray1(1) = New CodeTypeOfExpression(type1)
        expressionArray1(2) = New CodePrimitiveExpression(entry.Name)
        Return New CodeCastExpression(descriptor1.PropertyType,
 _
           New CodeMethodInvokeExpression(New
 CodeTypeReferenceExpression _
           (MyBase.GetType()), "GetEvalData",
 expressionArray1))
    End Function

    Public Overrides ReadOnly
 Property SupportsEvaluate() As Boolean
        Get
            Return True
        End Get
    End Property
End Class
using System;
using System.CodeDom;
using System.Web.UI;
using System.ComponentModel;
using System.Web.Compilation;
using System.Web.UI.Design;

// Apply ExpressionEditorAttributes to allow the 
// expression to appear in the designer.
[ExpressionPrefix("MyCustomExpression")]
[ExpressionEditor("MyCustomExpressionEditor")]
public class MyExpressionBuilder : ExpressionBuilder
{
    // Create a method that will return the result 
    // set for the expression argument.
    public static object GetEvalData(string
 expression, Type target, string entry)
    {
        return expression;
    }

    public override object EvaluateExpression(object target, BoundPropertyEntry
 entry, 
    object parsedData, ExpressionBuilderContext context)
    {
        return GetEvalData(entry.Expression, target.GetType(),
 entry.Name);
    }

    public override CodeExpression GetCodeExpression(BoundPropertyEntry
 entry, 
    object parsedData, ExpressionBuilderContext context)
    {
        Type type1 = entry.DeclaringType;
        PropertyDescriptor descriptor1 = TypeDescriptor.GetProperties(type1)[entry.PropertyInfo.Name];
        CodeExpression[] expressionArray1 = new CodeExpression[3];
        expressionArray1[0] = new CodePrimitiveExpression(entry.Expression.Trim());
        expressionArray1[1] = new CodeTypeOfExpression(type1);
        expressionArray1[2] = new CodePrimitiveExpression(entry.Name);
        return new CodeCastExpression(descriptor1.PropertyType,
 new CodeMethodInvokeExpression(new 
       CodeTypeReferenceExpression(base.GetType()), "GetEvalData",
 expressionArray1));
    }

    public override bool SupportsEvaluate
    {
        get { return true;
 }
    }
}
継承階層継承階層
System.Object
  System.Web.Compilation.ExpressionBuilder
     System.Web.Compilation.AppSettingsExpressionBuilder
     System.Web.Compilation.ConnectionStringsExpressionBuilder
     System.Web.Compilation.ResourceExpressionBuilder
スレッド セーフスレッド セーフ
この型の public static (Visual Basic では Shared) メンバはすべて、スレッド セーフです。インスタンス メンバ場合は、スレッド セーフであるとは限りません。
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
ExpressionBuilder メンバ
System.Web.Compilation 名前空間
ExpressionBuilderContext
ExpressionBuilder
ExpressionBuilderCollection
ExpressionBuilderContext
AppSettingsExpressionBuilder クラス
ConnectionStringsExpressionBuilder クラス
AppSettingsExpressionBuilder クラス

ExpressionBuilder クラス

メモ : このクラスは、.NET Framework version 2.0新しく追加されたものです。

コンパイル時動的リソース取得します

名前空間: System.Web.Configuration
アセンブリ: System.Web (system.web.dll 内)
構文構文

Public NotInheritable Class
 ExpressionBuilder
    Inherits ConfigurationElement
Dim instance As ExpressionBuilder
public sealed class ExpressionBuilder : ConfigurationElement
public ref class ExpressionBuilder sealed :
 public ConfigurationElement
public final class ExpressionBuilder extends
 ConfigurationElement
public final class ExpressionBuilder extends
 ConfigurationElement
解説解説

ASP.NET では、ExpressionBuilder クラス使用してページ解析中に式を自動的に評価します。ExpressionBuilderCollection コレクションは、構成compilation セクション定義されている expressionBuilders 要素構成されます。ExpressionBuilder には、キー/値ペア形式特定の値設定されます。

値は、次の形式の式をページ内に含めることにより取得します

<%$ ExpressionPrefix: ExpressionKey %>

ExpressionPrefix は、取得する式の型を、一般的なビルダの型 (つまり、AppSettingsExpressionBuilder) またはカスタムビルダの型として対応付けます。ExpressionKey は、戻り値参照するために使用されるキー指定します

一般的なビルダの型を実装する場合は、構成関連するセクション名と式ビルダ対応付ける必要がありますカスタムビルダの型を実装する場合は、カスタムビルダ クラス (ExpressionBuilder クラス派生クラスなければならない) と式ビルダ対応付ける必要があります

継承階層継承階層
System.Object
   System.Configuration.ConfigurationElement
    System.Web.Configuration.ExpressionBuilder
スレッド セーフスレッド セーフ
この型の public static (Visual Basic では Shared) メンバはすべて、スレッド セーフです。インスタンス メンバ場合は、スレッド セーフであるとは限りません。
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
ExpressionBuilder メンバ
System.Web.Configuration 名前空間
AppSettingsExpressionBuilder クラス
その他の技術情報
コンパイル使用する expressionBuilders 要素 (ASP.NET 設定スキーマ)
compilation の expressionBuilders の add 要素 (ASP.NET 設定スキーマ)
ASP.NET 式の概要


このページでは「.NET Framework クラス ライブラリ リファレンス」からExpressionBuilder クラスを検索した結果を表示しています。
Weblioに収録されているすべての辞書からExpressionBuilder クラスを検索する場合は、下記のリンクをクリックしてください。
 全ての辞書からExpressionBuilder クラス を検索

英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「ExpressionBuilder クラス」の関連用語

ExpressionBuilder クラスのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



ExpressionBuilder クラスのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2025 Microsoft.All rights reserved.

©2025 GRAS Group, Inc.RSS