Как я могу создать дочерний класс расширения из родительского класса с именем _Extension?

Я занимаюсь разработкой в ​​Visual Studio для Dynamics 365. Мне нужно расширить класс с окончательным именем _Extension. Ниже подробности:

class MyParentClass_Extension
{
    str doSomething(int arg) 
   {
       // ...
   }
}

Я хотел бы создать дочерний класс:

[ExtensionOf(classStr(MyParentClass_Extension))]
final class My ChildClass_Extension_Extension
{
    str doSomething(int arg) 
    {
        // Part 1
        var s = next doSomething(arg + 4);
        // Part 2
        return s;
    }
}

Я получаю ошибку компиляции. Есть ли способ расширить класс, подобный моему?

Спасибо.


person ulisses    schedule 05.09.2019    source источник
comment
Кроме того, для людей, которые могут найти этот вопрос и ответ через Google, не могли бы вы обновить вопрос, скопировав и вставив точное сообщение об ошибке?   -  person rjv    schedule 06.09.2019


Ответы (2)


Вам нужно будет запустить Обновление платформы 26 или выше. Расширение классов расширения возможно только на платформе PU26 или более поздней версии.

В разделе «Расширяемость» по приведенной выше ссылке вы найдете связать третью волну улучшений расширяемости. Здесь вы заметите, что они добавили возможность расширять расширения.

Чтобы ответить на ваш вопрос: вы, вероятно, получаете ошибку компиляции, потому что вы используете обновление платформы до PU26.

person rjv    schedule 05.09.2019

Насколько я понимаю по вашему коду, всего 3 класса:

  1. MyParentClass
  2. MyParentClass_Extension, который расширяет MyParentClass
  3. MyParentClass_Extension_Extension, который расширяет MyParentClass_Extension

Теперь, когда вы создаете расширение, вы всегда устанавливаете его как final, что означает, что вы не можете расширять этот класс дальше. В вашем случае, как я полагаю, вы уже установили final для класса MyParentClass_Extension, а следующий дочерний класс MyParentClass_Extension_extension пытается расширить MyParentClass_Extension, который равен final. Вот почему вы получаете ошибку.

person Deepak Agarwal    schedule 26.09.2019