Skip to content
Улучшенная работа с рефлектором и интерфейсами
1C Enterprise Shell
Branch: develop
Clone or download
Pull request Compare This branch is 19 commits behind khorevaa:develop.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.vscode
docs
src/Классы
tasks
tests
.gitignore
.travis.yml
LICENSE
README.md
packagedef
sonar-project.properties
sonar-qube.sh
sonarlint.json
travis-ci.sh

README.md

Enchanted Reflector & Interfaces для OScript

Stars Release Открытый чат проекта https://gitter.im//oscript-reflector/Lobby

Build Status Coverage Status

Короткое название библиотеки reflector

Данная библиотека для языка OScript, упрощает работу с встроенным объектом Рефлектор и добавляет функциональность работы с интерфейсами

Документация и описание публичного API

Быстрый старт

Библиотека реализовывает 2 новых класса:

  • РефлекторОбъекта - класс отвечает за обработку проверки наличия методов у объектов и кеширования результатов
  • ИнтерфейсОбъекта - клаcс реализовывает виртуальные интерфейсы для объектов и проводит их сравнение с картами объектов (метод ПолучитьТаблицуМетодов объекта Рефлектор)

Установка

Для установки необходимо:

  • Скачать файл reflector*.ospx из раздела releases
  • Воспользоваться командой:
$ opm install -f <ПутьКФайлу>

Пример простой проверки на метод/свойство объекта

  • Проверка на функцию объекта
    РасширенныйРефлектор = Новый РефлекторОбъекта(Новый ТестовыйКласс);

    ЕстьФункция = РасширенныйРефлектор.ЕстьФункция("ПроверочнаяФункция", 5);

  • Проверка на процедуру объекта
    РасширенныйРефлектор = Новый РефлекторОбъекта(Новый ТестовыйКласс);

    ЕстьПроцедура = РасширенныйРефлектор.ЕстьПроцедура("ПроверочнаяПроцедура", 1);

  • Проверка на свойство объекта
    РасширенныйРефлектор = Новый РефлекторОбъекта(Новый ТестовыйКласс);

    ЕстьСвойство = РасширенныйРефлектор.ЕстьСвойство("Свойство1");

  • Проверка объекта на реализацию интерфейса
    Интерфейс = Новый ИнтерфейсОбъекта;
    Интерфейс.Ф("Функция1")
             .П("Процедура1");

    РасширенныйРефлектор = Новый РефлекторОбъекта(ЭтотОбъект);

    РеализуетИнтерфейс = РасширенныйРефлектор.РеализуетИнтерфейс(Интерфейс);

    Утверждения.ПроверитьИстину(РеализуетИнтерфейс, "Интерфейс реализуется объектом");

  • Получение структуры реализованных методов объекта по интерфейсу

    Интерфейс = Новый ИнтерфейсОбъекта;
    Интерфейс.Ф("Функция1")
             .П("Процедура1")
             .Ф("ЛиповаяФункция", 2)
             .П("ЛиповаяПроцедура", 3);

    РасширенныйРефлектор = Новый РефлекторОбъекта(Новый ТестовыйКласс);

    РеализованныеМетодыИнтерфейса = РасширенныйРефлектор.РеализованныеМетодыИнтерфейса(Интерфейс);

Доработка

Доработка проводится по git-flow. Жду ваших PR.

Лицензия

Смотри файл LICENSE.

You can’t perform that action at this time.