среда, 12 января 2011 г.

Создание и использование встроенных C# методов (1)

Я уже писал, что в C1 можно встраивать и использовать внешние методы, написанные на C#.

В двух словах: вы создаете публичный класс прямо в папке App_Code, в класс добавляете публичный статический метод. Этот метод становится доступным для подключения в C1. Вы его подключаете и он начинает себя вести как обычная функция C1, которую можно вставлять в содержание страницы, шаблон страницы, использовать в других функциях C1 и т. д.

Но можно немного упростить себе задачу. В C1 можно создавать все те же методы на C# прямо в админке в разделе Functions (Функции), т.е. создавать встроенные C# функции (inline C# functions).


При создании такой функции, можно выбрать шаблон, который сгенерит минимум кода для функции. На выбор предлагаются такие шаблоны:
  • пустой метод (Empty method)
  • пустой метод с параметрами (Method with parameters)
  • метод, использующий подключение данных (Method using data connection)
В этом сообщении я расскажу о том, как создать внутреннюю C# функцию, которая будет делать то же самое, что и наш внешний метод (описанный ранее) - возвращать текущую дату как строку в полном формате.
  1. Заходим в админку в раздел Functions.
  2. Выбираем узел C# functions и нажимаем кнопку Add Inline C# Function (добавить встроенную C# функцию).
  3. В появившемся окне заполняем поля:
    • Name (имя): обязательное поле - пишем, например, CurrentDate
    • Namespace (пространство имен): желательно указать - например, Demo
    • Description (описание): необязательное поле - пишем, например, "Возвращает текущую дату в полном формате"
    • Template (шаблон): выбираем шаблон, в данном случае - Empty method.
  4. Нажимаем Finish.
Все. Заготовка у нас есть. Теперь немножко подправим код, чтобы он делал то, что нам нужно:
  1. Переходим на вкладку Source (исходный код), если открыта другая вкладка.
  2. Заменяем тип возвращаемого значения с bool на string.
  3. Заменяем строку return true; на return DateTime.Now.ToLongDateString();.
  4. Сохраняем функцию (Save).
У нас должно получиться что-то вроде:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Xml.Linq;
using Composite.Data;
using Composite.Data.Types;


namespace Demo
{
  public static class InlineMethodFunction
  {
    public static string CurrentDate()
    {
      return DateTime.Now.ToLongDateString();
    }
  }
}

Используем только что созданную встроенную C# функцию точно также как и внешнюю C# функцию.

(В следующих сообщениях я расскажу, как создавать встроенные функции на основе двух остальных шаблонов - метода с параметрами и метода с подключением данных.)

Комментариев нет:

Отправить комментарий