Using Managers (PARole) C#
public class BSOInOrder : BSOMyCompNav
{
    public BSOInOrder(ACClass acType, IACObject content, IACObject parentACObject, ACValueList parameter, string acIdentifier = "")
        : base(acType, content, parentACObject, parameter, acIdentifier)
    {
    }

    public override bool ACInit(Global.ACStartTypes startChildMode = Global.ACStartTypes.Automatic)
    {
        if (!base.ACInit(startChildMode))
            return false;
        // (A) If you use InOrderManager as a local service object:
        _InOrderManager = InOrderManager.ACRefToServiceInstance(this);
        // (B) If you use InOrderManager as a network service, than you have to retrieve a instance as ACComponent instead of InOrderManager,
        // because on client side you have only a proxy object (ACComponentProxy):
        _InOrderManagerNet = InOrderManager.ACRefToServiceInstanceNet(this);
        return true;
    }

    public override bool ACDeInit(bool deleteACClassTask = false)
    {
        // (E) Detach references
        if (_InOrderManager != null)
            InOrderManager.DetachACRefFromServiceInstance(this, _InOrderManager);
        _InOrderManager = null;
        if (_InOrderManagerNet != null)
            InOrderManager.DetachACRefFromServiceInstance(this, _InOrderManagerNet);
        _InOrderManagerNet = null;

        return base.ACDeInit(deleteACClassTask);
    }

    protected ACRef<InOrderManager> _InOrderManager = null;
    public InOrderManager InOrderManager
    {
        get
        {
            if (_InOrderManager == null)
                return null;
            return _InOrderManager.ValueT;
        }
    }

    [ACMethodCommand("Sum", "en{'Sum lines'}de{'Summe Positionen'}", 200)]
    public void DisplaySum()
    {
        if (InOrderManager != null)
        {
            // (C) Usage if InOrderManager is configured as local service object
            double sum = InOrderManager.SumLines(this.DatabaseApp, this.CurrentInOrder);
            Messages.Info(this, String.Format("Local invocation: Sum is {0}", sum), true);
        }

        if (InOrderManagerNet != null)
        {
            // (D) Usage if InOrderManager is a network service
            object netResult = InOrderManagerNet.ACUrlCommand("!SumLinesByID", this.CurrentInOrder.InOrderID);
            if (netResult != null)
                Messages.Info(this, String.Format("Remote invocation: Sum is {0}", (double)netResult), true);
        }
    }
}