ExpressionBuilder クラス
アセンブリ: System.Web (system.web.dll 内)


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.Web.Compilation.ExpressionBuilder
System.Web.Compilation.AppSettingsExpressionBuilder
System.Web.Compilation.ConnectionStringsExpressionBuilder
System.Web.Compilation.ResourceExpressionBuilder


Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


ExpressionBuilder クラス
アセンブリ: System.Web (system.web.dll 内)


ASP.NET では、ExpressionBuilder クラスを使用してページ解析中に式を自動的に評価します。ExpressionBuilderCollection コレクションは、構成の compilation セクションに定義されている expressionBuilders 要素で構成されます。ExpressionBuilder には、キー/値ペアの形式で特定の値が設定されます。
<%$ ExpressionPrefix: ExpressionKey %>
ExpressionPrefix は、取得する式の型を、一般的な式ビルダの型 (つまり、AppSettingsExpressionBuilder) またはカスタム式ビルダの型として対応付けます。ExpressionKey は、戻り値を参照するために使用されるキーを指定します。
一般的な式ビルダの型を実装する場合は、構成の関連するセクション名と式ビルダを対応付ける必要があります。カスタム式ビルダの型を実装する場合は、カスタム式ビルダ クラス (ExpressionBuilder クラスの派生クラスでなければならない) と式ビルダを対応付ける必要があります。

System.Configuration.ConfigurationElement
System.Web.Configuration.ExpressionBuilder


Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


ExpressionBuilder コンストラクタ
アセンブリ: System.Web (system.web.dll 内)


ExpressionBuilder は抽象クラスであるため、ExpressionBuilder のインスタンスを ExpressionBuilder コンストラクタを使用して直接作成することはできません。
実装時の注意 ExpressionBuilder クラスから派生させる場合は、ExpressionBuilder コンストラクタをオーバーライドして、独自の式ビルダ実装に対するカスタム初期化アクションを実装します。
Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


ExpressionBuilder コンストラクタ
アセンブリ: System.Web (system.web.dll 内)

Dim expressionPrefix As String Dim theType As String Dim instance As New ExpressionBuilder(expressionPrefix, theType)

ExpressionBuilder オブジェクトを作成する方法を次のコード例に示します。このコード例は、ExpressionBuilderCollection クラスのトピックで取り上げているコード例の一部分です。

Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


ExpressionBuilder プロパティ

名前 | 説明 | |
---|---|---|
![]() | SupportsEvaluate | 派生クラスでオーバーライドされた場合は、現在の ExpressionBuilder オブジェクトがコンパイルなしページをサポートするかどうかを示す値を返します。 |

ExpressionBuilder プロパティ

名前 | 説明 | |
---|---|---|
![]() | ElementInformation | ConfigurationElement オブジェクトのカスタマイズできない情報と機能を格納する ElementInformation オブジェクトを取得します。 ( ConfigurationElement から継承されます。) |
![]() | ExpressionPrefix | 取得する式の型を指定する文字列を取得または設定します。 |
![]() | LockAllAttributesExcept | ロックされている属性のコレクションを取得します。 ( ConfigurationElement から継承されます。) |
![]() | LockAllElementsExcept | ロックされている要素のコレクションを取得します。 ( ConfigurationElement から継承されます。) |
![]() | LockAttributes | ロックされている属性のコレクションを取得します。 ( ConfigurationElement から継承されます。) |
![]() | LockElements | ロックされている要素のコレクションを取得します。 ( ConfigurationElement から継承されます。) |
![]() | LockItem | 要素がロックされているかどうかを示す値を取得または設定します。 ( ConfigurationElement から継承されます。) |
![]() | Type | 式の型を指定する文字列を取得または設定します。 |

名前 | 説明 | |
---|---|---|
![]() | ElementProperty | ConfigurationElement オブジェクト自体を表す ConfigurationElementProperty オブジェクトを取得します。 ( ConfigurationElement から継承されます。) |
![]() | EvaluationContext | ConfigurationElement オブジェクトの ContextInformation オブジェクトを取得します。 ( ConfigurationElement から継承されます。) |
![]() | Item | オーバーロードされます。 この ConfigurationElement オブジェクトのプロパティ、属性、または子要素を取得または設定します。 ( ConfigurationElement から継承されます。) |
![]() | Properties | プロパティのコレクションを取得します。 ( ConfigurationElement から継承されます。) |

ExpressionBuilder メソッド

名前 | 説明 | |
---|---|---|
![]() | Equals | オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 ( Object から継承されます。) |
![]() | EvaluateExpression | 派生クラスでオーバーライドされた場合は、評価された式を表すオブジェクトを返します。 |
![]() | GetCodeExpression | 派生クラスでオーバーライドされた場合、評価された式を取得するためにページ実行中に使用されるコードが返されます。 |
![]() | GetHashCode | 特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 ( Object から継承されます。) |
![]() | GetType | 現在のインスタンスの Type を取得します。 ( Object から継承されます。) |
![]() | ParseExpression | 派生クラスでオーバーライドされた場合は、解析された式を表すオブジェクトを返します。 |
![]() | ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 ( Object から継承されます。) |
![]() | ToString | 現在の Object を表す String を返します。 ( Object から継承されます。) |

名前 | 説明 | |
---|---|---|
![]() | Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 ( Object から継承されます。) |
![]() | MemberwiseClone | 現在の Object の簡易コピーを作成します。 ( Object から継承されます。) |

ExpressionBuilder メソッド

名前 | 説明 | |
---|---|---|
![]() | Equals | オーバーロードされます。 現在の ConfigurationElement インスタンスを、指定したオブジェクトと比較します。 ( ConfigurationElement から継承されます。) |
![]() | GetHashCode | 現在の ConfigurationElement インスタンスを表す一意の値を取得します。 ( ConfigurationElement から継承されます。) |
![]() | GetType | 現在のインスタンスの Type を取得します。 ( Object から継承されます。) |
![]() | IsReadOnly | ConfigurationElement オブジェクトが読み取り専用かどうかを示す値を取得します。 ( ConfigurationElement から継承されます。) |
![]() | ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 ( Object から継承されます。) |
![]() | ToString | 現在の Object を表す String を返します。 ( Object から継承されます。) |

名前 | 説明 | |
---|---|---|
![]() | DeserializeElement | 構成ファイルから XML を読み取ります。 ( ConfigurationElement から継承されます。) |
![]() | Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 ( Object から継承されます。) |
![]() | Init | ConfigurationElement オブジェクトを初期状態に設定します。 ( ConfigurationElement から継承されます。) |
![]() | InitializeDefault | ConfigurationElement オブジェクトの既定の値セットを初期化するために使用します。 ( ConfigurationElement から継承されます。) |
![]() | IsModified | 派生クラスに実装された場合、この構成要素が最後の保存または読み込み以降に変更されたかどうかを示します。 ( ConfigurationElement から継承されます。) |
![]() | ListErrors | この ConfigurationElement オブジェクトおよびすべてのサブ要素の無効なプロパティのエラーを、渡されたリストに追加します。 ( ConfigurationElement から継承されます。) |
![]() | MemberwiseClone | 現在の Object の簡易コピーを作成します。 ( Object から継承されます。) |
![]() | OnDeserializeUnrecognizedAttribute | 逆シリカル化中に不明な属性が発生したかどうかを示す値を取得します。 ( ConfigurationElement から継承されます。) |
![]() | OnDeserializeUnrecognizedElement | 逆シリカル化中に不明な要素が発生したかどうかを示す値を取得します。 ( ConfigurationElement から継承されます。) |
![]() | OnRequiredPropertyNotFound | 必須プロパティが見つからなかったかどうかを示す値を取得します。 ( ConfigurationElement から継承されます。) |
![]() | PostDeserialize | 逆シリアル化後に呼び出されます。 ( ConfigurationElement から継承されます。) |
![]() | PreSerialize | シリアル化前に呼び出されます。 ( ConfigurationElement から継承されます。) |
![]() | Reset | ConfigurationElement オブジェクトの内部状態 (ロックやプロパティ コレクションなど) をリセットします。 ( ConfigurationElement から継承されます。) |
![]() | ResetModified | 派生クラスに実装された場合、IsModified メソッドの値を false にリセットします。 ( ConfigurationElement から継承されます。) |
![]() | SerializeElement | 派生クラスに実装されている場合、この構成要素の内容を構成ファイルに書き込みます。 ( ConfigurationElement から継承されます。) |
![]() | SerializeToXmlElement | 派生クラスに実装されている場合、この構成要素の外側のタグを構成ファイルに書き込みます。 ( ConfigurationElement から継承されます。) |
![]() | SetPropertyValue | プロパティを指定した値に設定します。 ( ConfigurationElement から継承されます。) |
![]() | SetReadOnly | ConfigurationElement オブジェクトおよびすべてのサブ要素に IsReadOnly プロパティを設定します。 ( ConfigurationElement から継承されます。) |
![]() | Unmerge | 保存しないすべての値を削除するには、ConfigurationElement オブジェクトを変更します。 ( ConfigurationElement から継承されます。) |

ExpressionBuilder メンバ
ExpressionBuilder データ型で公開されるメンバを以下の表に示します。


名前 | 説明 | |
---|---|---|
![]() | SupportsEvaluate | 派生クラスでオーバーライドされた場合は、現在の ExpressionBuilder オブジェクトがコンパイルなしページをサポートするかどうかを示す値を返します。 |

名前 | 説明 | |
---|---|---|
![]() | Equals | オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 (Object から継承されます。) |
![]() | EvaluateExpression | 派生クラスでオーバーライドされた場合は、評価された式を表すオブジェクトを返します。 |
![]() | GetCodeExpression | 派生クラスでオーバーライドされた場合、評価された式を取得するためにページ実行中に使用されるコードが返されます。 |
![]() | GetHashCode | 特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 (Object から継承されます。) |
![]() | GetType | 現在のインスタンスの Type を取得します。 (Object から継承されます。) |
![]() | ParseExpression | 派生クラスでオーバーライドされた場合は、解析された式を表すオブジェクトを返します。 |
![]() | ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 (Object から継承されます。) |
![]() | ToString | 現在の Object を表す String を返します。 (Object から継承されます。) |

名前 | 説明 | |
---|---|---|
![]() | Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 (Object から継承されます。) |
![]() | MemberwiseClone | 現在の Object の簡易コピーを作成します。 (Object から継承されます。) |

ExpressionBuilder メンバ
ExpressionBuilder データ型で公開されるメンバを以下の表に示します。


名前 | 説明 | |
---|---|---|
![]() | ElementInformation | ConfigurationElement オブジェクトのカスタマイズできない情報と機能を格納する ElementInformation オブジェクトを取得します。 (ConfigurationElement から継承されます。) |
![]() | ExpressionPrefix | 取得する式の型を指定する文字列を取得または設定します。 |
![]() | LockAllAttributesExcept | ロックされている属性のコレクションを取得します。(ConfigurationElement から継承されます。) |
![]() | LockAllElementsExcept | ロックされている要素のコレクションを取得します。(ConfigurationElement から継承されます。) |
![]() | LockAttributes | ロックされている属性のコレクションを取得します。 (ConfigurationElement から継承されます。) |
![]() | LockElements | ロックされている要素のコレクションを取得します。(ConfigurationElement から継承されます。) |
![]() | LockItem | 要素がロックされているかどうかを示す値を取得または設定します。(ConfigurationElement から継承されます。) |
![]() | Type | 式の型を指定する文字列を取得または設定します。 |

名前 | 説明 | |
---|---|---|
![]() | ElementProperty | ConfigurationElement オブジェクト自体を表す ConfigurationElementProperty オブジェクトを取得します。(ConfigurationElement から継承されます。) |
![]() | EvaluationContext | ConfigurationElement オブジェクトの ContextInformation オブジェクトを取得します。(ConfigurationElement から継承されます。) |
![]() | Item | オーバーロードされます。 この ConfigurationElement オブジェクトのプロパティ、属性、または子要素を取得または設定します。(ConfigurationElement から継承されます。) |
![]() | Properties | プロパティのコレクションを取得します。(ConfigurationElement から継承されます。) |

名前 | 説明 | |
---|---|---|
![]() | Equals | オーバーロードされます。 現在の ConfigurationElement インスタンスを、指定したオブジェクトと比較します。 (ConfigurationElement から継承されます。) |
![]() | GetHashCode | 現在の ConfigurationElement インスタンスを表す一意の値を取得します。 (ConfigurationElement から継承されます。) |
![]() | GetType | 現在のインスタンスの Type を取得します。 (Object から継承されます。) |
![]() | IsReadOnly | ConfigurationElement オブジェクトが読み取り専用かどうかを示す値を取得します。 (ConfigurationElement から継承されます。) |
![]() | ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 (Object から継承されます。) |
![]() | ToString | 現在の Object を表す String を返します。 (Object から継承されます。) |

名前 | 説明 | |
---|---|---|
![]() | DeserializeElement | 構成ファイルから XML を読み取ります。 (ConfigurationElement から継承されます。) |
![]() | Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 (Object から継承されます。) |
![]() | Init | ConfigurationElement オブジェクトを初期状態に設定します。 (ConfigurationElement から継承されます。) |
![]() | InitializeDefault | ConfigurationElement オブジェクトの既定の値セットを初期化するために使用します。 (ConfigurationElement から継承されます。) |
![]() | IsModified | 派生クラスに実装された場合、この構成要素が最後の保存または読み込み以降に変更されたかどうかを示します。 (ConfigurationElement から継承されます。) |
![]() | ListErrors | この ConfigurationElement オブジェクトおよびすべてのサブ要素の無効なプロパティのエラーを、渡されたリストに追加します。 (ConfigurationElement から継承されます。) |
![]() | MemberwiseClone | 現在の Object の簡易コピーを作成します。 (Object から継承されます。) |
![]() | OnDeserializeUnrecognizedAttribute | 逆シリカル化中に不明な属性が発生したかどうかを示す値を取得します。 (ConfigurationElement から継承されます。) |
![]() | OnDeserializeUnrecognizedElement | 逆シリカル化中に不明な要素が発生したかどうかを示す値を取得します。 (ConfigurationElement から継承されます。) |
![]() | OnRequiredPropertyNotFound | 必須プロパティが見つからなかったかどうかを示す値を取得します。 (ConfigurationElement から継承されます。) |
![]() | PostDeserialize | 逆シリアル化後に呼び出されます。 (ConfigurationElement から継承されます。) |
![]() | PreSerialize | シリアル化前に呼び出されます。 (ConfigurationElement から継承されます。) |
![]() | Reset | ConfigurationElement オブジェクトの内部状態 (ロックやプロパティ コレクションなど) をリセットします。 (ConfigurationElement から継承されます。) |
![]() | ResetModified | 派生クラスに実装された場合、IsModified メソッドの値を false にリセットします。 (ConfigurationElement から継承されます。) |
![]() | SerializeElement | 派生クラスに実装されている場合、この構成要素の内容を構成ファイルに書き込みます。 (ConfigurationElement から継承されます。) |
![]() | SerializeToXmlElement | 派生クラスに実装されている場合、この構成要素の外側のタグを構成ファイルに書き込みます。 (ConfigurationElement から継承されます。) |
![]() | SetPropertyValue | プロパティを指定した値に設定します。 (ConfigurationElement から継承されます。) |
![]() | SetReadOnly | ConfigurationElement オブジェクトおよびすべてのサブ要素に IsReadOnly プロパティを設定します。 (ConfigurationElement から継承されます。) |
![]() | Unmerge | 保存しないすべての値を削除するには、ConfigurationElement オブジェクトを変更します。 (ConfigurationElement から継承されます。) |

- ExpressionBuilderのページへのリンク