|
01.06.2017, 22:32 | #1 |
Участник
|
> 1. нужно указывать базовый класс
> 2. нужно делать cast. для этого нужно знать к какому базовому классу кастить. Тут извиняйте, если бы были дженерики, можно было бы сделать X++: var x = SysExtensionAppClassFactory::getClassFromSysAttribute<MyBaseClass>(attribute) Кстати в данном случае надо использовать не is - он вернет null если вдруг будет не ожидаемый тип а просто обявить явно тип без var - это будет все равно что строгий каст в C# (тип в скобочках). > в семействе может быть несколько базовых с разной логикой. см FormLetter. Дык все равно ты тут одижаешь какой-то один тип - класс или интерфейс, если разные, то надо либо делать разные плагины либо дальше кастить - без этого логически никак. |
|
02.06.2017, 07:51 | #2 |
Участник
|
Спасибо за проект. Посмотрю.
ага. я тоже так подумал. но этот код скопирован из существующего в аксапте. я стремился сделать штатными средствами и максимально похожим на штатную функциональность. ) |
|
02.06.2017, 08:07 | #3 |
Участник
|
is можно использовать, но только в том случае, когда в значении может быть другой класс и это валидный кейз. После чего значение перед использованием надо обязательно проверить на null. К сожалению, это частая ошибка использовать одно вместо другого. К сожалению, в X++ нету явного строгого приведения.
|
|
Теги |
sysextension framework, sysoperation framework, как правильно, полезное |
|
|