click fraud detection

X++ в AX7: Методы расширения. Часть 12

Дата публикации: 28.09.2017

Вы когда-нибудь сталкивались с тем, что Microsoft предоставил класс или таблицу в которой не достает методов, которые облегчили бы вашу жизнь? Если это так, у вас может возникнуть соблазн добавить его самостоятельно, используя перекрытие. И вы наверняка заплатите за это при обновлении!

Вы будете довольны, сейчас AX7 X ++ поддерживает методы расширения, подобно C#.

Предположим, мы хотим добавить метод fullName в таблицу DirPersonName. Вот как вы это сделаете, не касаясь таблицы DirPersonName. Создайте этот новый класс: 

static class MyDirPersonName_Extension

{

    static public PersonName fullName(DirPersonName _person)

    {

        return strFmt('%1 %2 %3', _person.FirstName, _person.MiddleName, _person.LastName);

    }

}

Что нужно запомнить:

  1. Название класса должно иметь постфикс "_extension". Класс должен быть статическим.
  2. Расширенные методы должны быть статическими.
  3. Тип первого параметра определяет, какой тип будет расширен.

Теперь вы можете наслаждаться своим методом расширения:

while select dirPersonName

{

    info(dirPersonName.fullName());

}

 

Обратите внимание:

  1. При вызове методов расширения вы не указываете первый параметр - который подразумевается из типа экземпляра.
  2. Если метод расширения принял любые дополнительные параметры - они (конечно) должны быть предоставлены.

Это не нарушает инкапсуляцию. У метода расширения есть доступ к общедоступным полям и методам типа.

Обновление - начиная с осеннего релиза 2016, синтаксис теперь более чистый - и вы можете сделать гораздо больше (см. Здесь). 

Вышеприведенный пример можно переписать следующим образом:

 [ExtensionOf(tableStr(DirPersonName))]

final class MyDirPersonName_Extension

{

    public PersonName fullName()

    {

        return strFmt('%1 %2 %3'this.FirstName, this.MiddleName, this.LastName);

    }

}

 

Этот пост относится к предварительному показу MICROSOFT DYNAMICS AX7; представлен как есть и не влечет за собой передачу каких-либо прав. 

Оригинальная статья по ссылке.

Другие статьи по теме:

1 часть "X++ в AX7: ключевое слово "var" доступна тут.

2 часть "X++ в AX7: ключевые слова "finally" и "using" доступна тут.

3 часть "X++ в AX7: определение типа может включать 80 знаков" доступна тут

4 часть "X++ в AX7: элементы с уровнями доступа private и public" доступна тут.

5 часть "X++ в AX7: статические члены класса" доступна тут.

6 часть "X++ в AX7: ключевые слова Client/Server" доступна тут.

7 часть "X ++ в AX7: статическая подписка на событие" доступна тут.

8 часть "X ++ в AX7: статические классы" доступна тут.

9 часть "Х ++ в АХ7: Internal keyword" доступна тут.

10 часть "Х ++ в АХ7: вещественные типы данных" доступна тут.

11 часть "Х ++ в АХ7: ключевое слово Readonly" доступна тут.

 

Акция "Тест-драйв Сопровождения"

Попробуй сопровождение АХ до подписания договора!


Узнать подробнее

Другие записи в блоге

13.02.2018
Этот пост расскажет об одном из наиболее незаметных изменений в AX7. AX7 использует среду выполнения платформы .NET или CLR. В CLR сигнатура метода включает регистр, параметры и тип возвращаемого...
10.01.2018
Dynamics AX – это веб-приложение, работающее в облаке, но как пользователи могут работать с файлами в такой среде? Ответ прост: так же, как и с другими веб-приложениями. Если вы знаете, как добавлять...
22.11.2017

Подпишитесь на блог

Все интересные статьи нашего блога на Вашем почтовом ящике!


Подписка

Служба контроля качества сервиса

Свои пожелания и отзывы о качестве обслуживания Вы можете оставить в разделе


Письмо директору