ExpressionEditor 類別

定義

定義一組屬性和方法用於評估在設計階段與控制項屬性關聯的運算式,並用於將運算式編輯器工作表提供給視覺化設計主應用程式,以在運算式編輯器對話方塊中使用。 這個類別是抽象的。

public ref class ExpressionEditor abstract
public abstract class ExpressionEditor
type ExpressionEditor = class
Public MustInherit Class ExpressionEditor
繼承
ExpressionEditor
衍生

範例

下列程式碼範例示範如何衍生自 類別, ExpressionEditor 以定義自訂表格達式編輯器。

using System;
using System.Collections;
using System.Collections.Specialized;
using System.CodeDom;
using System.Configuration;
using System.Web.UI.Design;
using System.Web.Compilation;

namespace ExpressionEditorSamples.CS
{
    [ExpressionPrefix("CustomAppSettings")]
    [ExpressionEditor(typeof(ExpressionEditorSamples.CS.CustomAppSettingsEditor))]
    public class CustomAppSettingsBuilder : AppSettingsExpressionBuilder
    {
        // Use the built-in AppSettingsExpressionBuilder class,
        // but associate it with a custom expression editor class.
    }

    public class CustomAppSettingsEditor : System.Web.UI.Design.ExpressionEditor
    {
        public override object EvaluateExpression(string expression, object parseTimeData, Type propertyType, IServiceProvider serviceProvider)
        {
            KeyValueConfigurationCollection customSettings = null;

            if (serviceProvider != null)
            {
                IWebApplication webApp = (IWebApplication)serviceProvider.GetService(typeof(IWebApplication));
                if (webApp != null)
                {
                    Configuration config = webApp.OpenWebConfiguration(true);
                    if (config != null)
                    {
                        AppSettingsSection settingsSection = config.AppSettings;
                        if (settingsSection != null)
                        {
                            customSettings = settingsSection.Settings;
                        }
                    }
                }
            }

            if (customSettings != null)
            {
                return customSettings[expression];
            }

            return expression;
        }
    }
}

備註

視覺化設計工具主機,例如 Visual Studio 2005,會 ExpressionEditor 使用 類別向使用者呈現自訂表格達式編輯器工作表,然後評估選取的運算式以進行設計階段轉譯。

當您在設計階段的 [屬性] 方格中流覽 Expressions 控制項的屬性時,視覺化設計工具會顯示對話方塊來設定控制項屬性的運算式。 您可以根據運算式前置詞清單來選取運算式類型。 當您從清單中選取運算式前置詞時,視覺化設計工具會使用相關聯的 ExpressionEditorExpressionEditorSheet 物件,根據該運算式類型的語法來設定、評估及轉換運算式字串。 視覺化設計工具會設定相關聯控制項屬性的運算式,然後使用評估的運算式結果來指派在設計介面上呈現的控制項屬性值。

靜態 GetExpressionEditor 方法會取得與特定運算式前置詞或運算式產生器相關聯的運算式編輯器。 物件的 屬性會 ExpressionPrefixExpressionEditor 回已設定的運算式前置詞。 方法 EvaluateExpression 會評估輸入運算式字串。 方法會 GetExpressionEditorSheetExpressionEditorSheet 回實作,這個實作會用來提示運算式對話方塊中的自訂表格達式屬性。

一般而言,若要在設計階段支援新的運算式類型,您可以定義唯一的運算式前置詞,並提供自訂 ExpressionBuilderExpressionEditor 實作。 您可以選擇性地提供自訂 ExpressionEditorSheet 實作,定義用來在運算式對話方塊中形成運算式的屬性。

運算式前置詞會識別自訂表格達式類型,並將運算式與運算式產生器和運算式編輯器產生關聯。 在頁面中剖析自訂表格達式時,會使用運算式前置詞來建立相關聯的 ExpressionBuilderExpressionEditor 類別的實例。 若要將運算式前置詞與運算式產生器和運算式編輯器產生關聯,請將 ExpressionEditorAttributeExpressionPrefixAttribute 屬性套用至自訂 ExpressionBuilder 類別,並在 Web 組態檔的 元素中 expressionBuilders 設定運算式產生器的運算式前置詞。 不需要前置詞,但強烈建議使用。

給實施者的注意事項

衍生自訂 ExpressionEditor 類別時需要下列步驟:

例如,類別 ResourceExpressionEditor 衍生自 類別, ExpressionEditor 並提供實作,以在設計階段評估及關聯資源字串參考與控制項屬性。 類別 ResourceExpressionBuilder 與運算式前置 Resources 詞和實作 ResourceExpressionEditor 相關聯。 方法會 GetExpressionEditorSheet(String, IServiceProvider) 傳回 , ResourceExpressionEditorSheet 定義形成資源參考運算式的個別屬性。

建構函式

ExpressionEditor()

初始化 ExpressionEditor 類別的新執行個體。

屬性

ExpressionPrefix

取得運算式前置字元,辨識運算式編輯器實作所支援的運算式字串。

方法

Equals(Object)

判斷指定的物件是否等於目前的物件。

(繼承來源 Object)
EvaluateExpression(String, Object, Type, IServiceProvider)

評估運算式字串,並提供控制項屬性的設計階段值。

GetExpressionEditor(String, IServiceProvider)

傳回與指定之運算式前置字元關聯的 ExpressionEditor 實作。

GetExpressionEditor(Type, IServiceProvider)

傳回與指定運算式產生器型別關聯的 ExpressionEditor 實作。

GetExpressionEditorSheet(String, IServiceProvider)

傳回與目前運算式編輯器關聯的運算式編輯器工作表。

GetHashCode()

做為預設雜湊函式。

(繼承來源 Object)
GetType()

取得目前執行個體的 Type

(繼承來源 Object)
MemberwiseClone()

建立目前 Object 的淺層複製。

(繼承來源 Object)
ToString()

傳回代表目前物件的字串。

(繼承來源 Object)

適用於

另請參閱