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 свойства элемента управления в сетке свойств времени разработки визуальный конструктор отображает диалоговое окно для задания выражений для свойства элемента управления. Тип выражения можно выбрать на основе списка префиксов выражений. При выборе префикса выражения из списка визуальный конструктор использует связанные ExpressionEditor объекты для ExpressionEditorSheet задания, вычисления и преобразования строки выражения на основе синтаксиса для этого типа выражения. Визуальный конструктор задает выражение для связанного свойства элемента управления, а затем использует результат вычисленного выражения для назначения значений свойств элемента управления, отображаемых в области конструктора.
Статические GetExpressionEditor методы получают редактор выражений, связанный с определенным префиксом выражения или построителем выражений. Свойство ExpressionPrefix для объекта возвращает настроенный ExpressionEditor префикс выражения. Метод EvaluateExpression вычисляет строку входного выражения. Метод GetExpressionEditorSheet возвращает реализацию ExpressionEditorSheet , которая используется для запроса свойств пользовательского выражения в диалоговом окне выражений.
Как правило, для поддержки нового типа выражения во время разработки вы определяете уникальный префикс выражения и предоставляете пользовательские ExpressionBuilder и ExpressionEditor реализации. При необходимости можно предоставить пользовательскую ExpressionEditorSheet реализацию, которая определяет свойства, используемые для формирования выражения в диалоговом окне выражений.
Префикс выражения определяет тип пользовательского выражения и связывает выражение с построителем выражений и редактором выражений. При анализе пользовательских выражений на странице префикс выражения используется для создания экземпляров связанных ExpressionBuilder и ExpressionEditor классов. Чтобы связать префикс выражения с построителем выражений и редактором выражений, примените ExpressionEditorAttribute атрибуты и ExpressionPrefixAttribute атрибуты к пользовательскому ExpressionBuilder классу и настройте префикс выражения для построителя выражений в элементе expressionBuilders
в файле веб-конфигурации. Префикс не является обязательным, но настоятельно рекомендуется.
Примечания для тех, кто реализует этот метод
Следующие действия необходимы при наследоваи пользовательского ExpressionEditor класса: — переопределите EvaluateExpression(String, Object, Type, IServiceProvider) метод для оценки типа пользовательского выражения во время разработки.
— При необходимости переопределите GetExpressionEditorSheet(String, IServiceProvider) метод, чтобы вернуть пользовательский класс, который определяет свойства, объединенные для формирования пользовательского выражения.
— Примените ExpressionEditorAttribute атрибут к ExpressionBuilder объявлению класса, чтобы связать построитель пользовательских выражений с классом редактора производных выражений.
Например, 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) |