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) |