/// <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); }
/// <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); }