Beispiel #1
0
        /// <summary>
        /// Generate the internal value of this data element
        /// </summary>
        /// <returns>Internal value in .NET form</returns>
        protected virtual Variant GenerateInternalValue()
        {
            Variant value;

            // 1. Default value

            value = DefaultValue;

            // 2. Check for type transformations

            if (MutatedValue != null && (mutationFlags & MUTATE_OVERRIDE_TYPE_TRANSFORM) != 0)
            {
                return(MutatedValue);
            }

            // 3. Relations

            if (MutatedValue != null && (mutationFlags & MUTATE_OVERRIDE_RELATIONS) != 0)
            {
                return(MutatedValue);
            }

            foreach (Relation r in _relations)
            {
                if (IsFromRelation(r))
                {
                    // CalculateFromValue can return null sometimes
                    // when mutations mess up the relation.
                    // In that case use the exsiting value for this element.

                    var relationValue = r.CalculateFromValue();
                    if (relationValue != null)
                    {
                        value = relationValue;
                    }
                }
            }

            // 4. Fixup

            if (MutatedValue != null && (mutationFlags & MUTATE_OVERRIDE_FIXUP) != 0)
            {
                return(MutatedValue);
            }

            if (_fixup != null)
            {
                value = _fixup.fixup(this);
            }

            return(value);
        }
Beispiel #2
0
        /// <summary>
        /// Generate the internal value of this data element
        /// </summary>
        /// <returns>Internal value in .NET form</returns>
        protected virtual Variant GenerateInternalValue()
        {
            Variant value;

            // 1. Default value

            value = DefaultValue;

            // 2. Check for type transformations

            if (MutatedValue != null && mutationFlags.HasFlag(MutateOverride.TypeTransform))
            {
                return(MutatedValue);
            }

            // 3. Relations

            if (MutatedValue != null && mutationFlags.HasFlag(MutateOverride.Relations))
            {
                return(MutatedValue);
            }

            foreach (var r in relations.From <Relation>())
            {
                // CalculateFromValue can return null sometimes
                // when mutations mess up the relation.
                // In that case use the exsiting value for this element.

                var relationValue = r.CalculateFromValue();
                if (relationValue != null)
                {
                    value = relationValue;
                }
            }

            // 4. Fixup

            if (MutatedValue != null && mutationFlags.HasFlag(MutateOverride.Fixup))
            {
                return(MutatedValue);
            }

            if (_fixup != null)
            {
                value = _fixup.fixup(this);
            }

            return(value);
        }