Показать сообщение отдельно
Старый 21.03.2017, 14:32   #22  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Цитата:
Сообщение от mazzy Посмотреть сообщение
Как вести разработку с минимальными в долгосрочной перспективе трудозатратами
в условиях, есть куча унаследованного кода И часть кода закрыта от изменения,
а платформа предоставляет систему событий и подписок?

что должен сделать вендор?
что может сделать партнер/заказчик своими силами?
Каким бы нехорошим не был подход с рефлексией, но он заслуживает серьезного внимания.
https://ievgensaxblog.wordpress.com/...xtension-code/

X++:
using System.Reflection;
 
/// <summary>
/// Handles events raised by <c>SalesLineTypeEventHandler</c> class.
/// </summary>
public class SalesLineTypeEventHandler
{
    [PostHandlerFor(classStr(SalesLineType), methodStr(SalesLineType, insert))]
    public static void SalesLineType_Post_insert(XppPrePostArgs _args)
    {
        SalesLineType salesLineType = _args.getThis();
 
        var bindFlags = BindingFlags::Instance | BindingFlags::NonPublic;
 
        var field = salesLineType.GetType().GetField("salesLine", bindFlags);
 
        SalesLine salesLine = field.GetValue(salesLineType);
 
        if (salesLine)
        {
            salesLine.MyNewField = 42;
            salesLine.doUpdate();
        }
    }
}
Вендор же никому ничего не должен