Exemplo n.º 1
0
        // -------------------------------------------------------------------------------------------
        // Translator Methods

        /* Turns out is was a bad idea to get "Value" by default via constructor. Instead, the
         * value should only be pulled from the translator when need comes.
         * This recursive call traverses the parents once the LAST enumerator is ready to read a value.
         *
         * FIXED: Made some fixes to the method (_Value was not being updated).
         */
        public IValueType TranslatorGetValue()
        {
            if (Parent != null)
            {
                Parent.TranslatorGetValue(); // (recursively get dependent XML nodes first)

                if (Translator == null)
                {
                    throw new InvalidOperationException("No translator specified.");
                }

                _Value = Translator.GetValue(Parent, NamePath.Split('.'), ValueIndex);
                // Note: The translator will expect Parent.Value to contain the XmlNodeField or DataListField<XmlNodeField> data it needs to read from.

                return(_Value);
            }

            if (_Value == null) // Note: This shouldn't happen, but just in case...
            {
                _Value = new XmlNodeField(null, true);
            }

            return(_Value); // Note: top level source enumerator simply returns the root XML document (as XmlNodeField).
        }
Exemplo n.º 2
0
 public void TranslatorSetValue(IValueType value)
 {
     Translator.SetValue(Parent, NamePath.Split('.'), value, ValueIndex);
 }