コード例 #1
0
 protected override IFormulaUsablePath CreateRelativePath(IFormulaUsable formulaUsable, IEntity refObject, IUsingFormula editedObject)
 {
     if (formulaUsable.IsAtReaction())
     {
         return(GenerateLocalReference(formulaUsable, editedObject));
     }
     return(base.CreateRelativePath(formulaUsable, refObject, editedObject));
 }
コード例 #2
0
        protected override IFormulaUsablePath CreateRelativePath(IFormulaUsable formulaUsable, IEntity refObject, IUsingFormula editedObject)
        {
            // relative paths are only used for parameter in the same event group
            if (refObject != null && formulaUsable.RootContainer.Equals(refObject.RootContainer))
            {
                IFormulaUsablePath path;
                if (formulaUsable.IsAtMolecule())
                {
                    if (formulaUsable.IsAnImplementationOf <IParameter>())
                    {
                        path = _objectPathFactory.CreateAbsoluteFormulaUsablePath(formulaUsable)
                               .AndAddAtFront((ObjectPath.PARENT_CONTAINER));
                    }
                    else
                    {
                        //Molecule replace With Amount
                        path = CreateFormulaUsablePathFrom(new[] { ObjectPath.PARENT_CONTAINER, formulaUsable.Name }, formulaUsable.Name, Constants.Dimension.MOLAR_AMOUNT);
                    }
                    correctPath(path, refObject as IContainer);
                }
                else
                {
                    if (formulaUsable.IsAtReaction())
                    {
                        path = CreateFormulaUsablePathFrom(new[] { formulaUsable.Name }, formulaUsable);
                        correctPath(path, refObject as IContainer);
                    }
                    else
                    {
                        path = base.CreateRelativePath(formulaUsable, refObject, editedObject);
                    }
                }
                return(path);
            }

            return(CreateAbsolutePath(formulaUsable));
        }