public void IterateThrough_fromRoot( string iteration_in, cClaSSe.dIteration_found iteration_found_in ) { OGen.lib.generator.utils.ReflectThrough( this, Root_Schema, iteration_found_in, iteration_in, Root_Schema, false, true ); }
public static string ReflectThrough( object someClass_in, string path_in, cClaSSe.dIteration_found iteration_found_in, string iteration_in, string pathTranslated_in, bool returnValue_in, bool anyAttribute_notJustXml ) { bool _valueHasBeenFound = false; return(ReflectThrough( someClass_in, path_in, iteration_found_in, iteration_in, pathTranslated_in, returnValue_in, anyAttribute_notJustXml, out _valueHasBeenFound )); }
public void IterateThrough_fromHere(string iteration_in, string path_in, cClaSSe.dIteration_found iteration_found_in) { classstateapi_.IterateThrough_fromHere(iteration_in, path_in, iteration_found_in); }
public void IterateThrough_fromRoot(string iteration_in, cClaSSe.dIteration_found iteration_found_in) { classstateapi_.IterateThrough_fromRoot(iteration_in, iteration_found_in); }
public void IterateThrough_fromRoot( string iteration_in, cClaSSe.dIteration_found iteration_found_in ) { bool _didit = false; if ( iteration_in.Substring(0, ExtendedMetadata.ROOT_METADATA.Length) == ExtendedMetadata.ROOT_METADATA ) { extendedmetadata_.IterateThrough_fromRoot( iteration_in, iteration_found_in ); _didit = true; } else { string _begin; string _indexstring; string _end; if (OGen.lib.generator.utils.rootExpression_TryParse( iteration_in, ROOT_SCHEMA, out _begin, out _indexstring, out _end )) { if (_indexstring == "n") { for (int i = 0; i < schemacollection_.Count; i++) { schemacollection_[i].IterateThrough_fromRoot( string.Format( "{0}{1}{2}", _begin, i, _end ), iteration_found_in ); } _didit = true; } else { int _indexint = int.Parse(_indexstring); schemacollection_[ _indexint ].IterateThrough_fromRoot( string.Format( "{0}{1}{2}", _begin, _indexint, _end ), iteration_found_in ); _didit = true; } } } if (!_didit) { throw new Exception(string.Format( "\n---\n{0}.{1}.IterateThrough_fromRoot(...): can't handle: {2}\n---", typeof(RootMetadata).Namespace, typeof(RootMetadata).Name, iteration_in )); } }
public void IterateThrough_fromRoot( string iteration_in, cClaSSe.dIteration_found iteration_found_in ) { bool _didit = false; string _begin; string _indexstring; string _end; if (OGen.lib.generator.utils.rootExpression_TryParse( iteration_in, ROOT_DOCUMENTATION, out _begin, out _indexstring, out _end )) { if (_indexstring == "n") { for (int i = 0; i < documentationcollection_.Count; i++) { documentationcollection_[i].IterateThrough_fromRoot( string.Format( "{0}{1}{2}", _begin, i, _end ), iteration_found_in ); } _didit = true; } else { int _indexint = int.Parse(_indexstring); documentationcollection_[ _indexint ].IterateThrough_fromRoot( string.Format( "{0}{1}{2}", _begin, _indexint, _end ), iteration_found_in ); _didit = true; } } if (!_didit) { throw new Exception(string.Format( "\n---\n{0}.{1}.IterateThrough_fromRoot(...): can't handle: {2}\n---", typeof(XS0__RootMetadata).Namespace, typeof(XS0__RootMetadata).Name, iteration_in )); } }
public static string ReflectThrough( object someClass_in, string path_in, cClaSSe.dIteration_found iteration_found_in, string iteration_in, string pathTranslated_in, bool returnValue_in, bool anyAttribute_notJustXml, out bool valueHasBeenFound_out ) { valueHasBeenFound_out = false; #if DEBUG const bool _usePerformance = true; #endif if ( #if DEBUG _usePerformance&& ( #endif ( returnValue_in && ( (path_in.Length > iteration_in.Length) || (path_in != iteration_in.Substring(0, path_in.Length)) ) ) || ( !returnValue_in && ( (pathTranslated_in.Length > iteration_in.Length) || (pathTranslated_in != iteration_in.Substring(0, pathTranslated_in.Length)) ) ) #if DEBUG ) #endif ) { // performance tweak, compares path to avoid looking in the wrong direction return(null); } if (iteration_in == pathTranslated_in) { if (iteration_found_in != null) { iteration_found_in(path_in); } } //#if DEBUG //Console.WriteLine( // "\n\t---\n\t{0}.{1}.ReflectThrough:{7}(\n\t\tsomeClass_in:\"{2}.{3}\",\n\t\tpath_in:\"{4}\",\n\t\titeration_in:\"{5}\",\n\t\tpathTranslated_in:\"{6}\"\n\t)\n\t---", // typeof(utils).Namespace, // typeof(utils).Name, // someClass_in.GetType().Namespace, // someClass_in.GetType().Name, // path_in, // iteration_in, // pathTranslated_in, // returnValue_in ? "READ" : "ITERATE" //); //#endif //#if DEBUG //Console.Write("{{{0}}}", path_in.ToUpper()); //#endif PropertyInfo[] _properties; System.Xml.Serialization.XmlElementAttribute _elementAttribute; System.Xml.Serialization.XmlAttributeAttribute _attribute; object _value; Array _array; string _output = null; bool _isAttribute = false; bool _isElement = false; string _attributename = string.Empty; int _indexOfSquareBrackets_begin = -1; int _indexOfSquareBrackets_end = -1; string _aux1; string _aux2; _properties = someClass_in.GetType().GetProperties( BindingFlags.Public | BindingFlags.Instance ); for (int _prop = 0; _prop < _properties.Length; _prop++) { _isAttribute = Attribute.IsDefined( _properties[_prop], typeof(System.Xml.Serialization.XmlAttributeAttribute) ); _isElement = Attribute.IsDefined( _properties[_prop], typeof(System.Xml.Serialization.XmlElementAttribute) ); if ( _isElement && ( (_properties[_prop].PropertyType != typeof(string)) && (_properties[_prop].PropertyType != typeof(decimal)) && (_properties[_prop].PropertyType != typeof(int)) && (_properties[_prop].PropertyType != typeof(bool)) && (_properties[_prop].PropertyType != typeof(DateTime)) ) ) { #region XmlElement... _value = _properties[_prop].GetValue(someClass_in, null); if (_value == null) { continue; } _elementAttribute = (System.Xml.Serialization.XmlElementAttribute)Attribute.GetCustomAttributes( _properties[_prop], typeof(System.Xml.Serialization.XmlElementAttribute), true )[0]; _aux1 = string.Format( "{0}.{1}", path_in, _elementAttribute.ElementName ); _indexOfSquareBrackets_begin = _aux1.Length; if ( #if DEBUG _usePerformance&& ( #endif (_indexOfSquareBrackets_begin > iteration_in.Length) || ( _aux1 != iteration_in.Substring( 0, _indexOfSquareBrackets_begin ) ) || ( ( (_aux2 = iteration_in.Substring( _indexOfSquareBrackets_begin, 1 )) != "[" ) && (_aux2 != ".") ) #if DEBUG ) #endif ) { continue; } if (_value.GetType().IsArray) { if ( #if DEBUG _usePerformance&& #endif returnValue_in ) { _indexOfSquareBrackets_end = iteration_in.IndexOf( ']', _indexOfSquareBrackets_begin + 1 ); } _array = (Array)_value; for ( int i = ( #if DEBUG _usePerformance&& #endif returnValue_in ) ? // performance tweak, goes straight to the iteration // when (returnValue_in == true) int.Parse( iteration_in.Substring( _indexOfSquareBrackets_begin + 1, _indexOfSquareBrackets_end - (_indexOfSquareBrackets_begin + 1) ) ) : 0 ; i < _array.Length; i++ ) { _output = ReflectThrough( _array.GetValue(i), string.Format( "{0}.{1}[{2}]", path_in, _elementAttribute.ElementName, i ), iteration_found_in, iteration_in, string.Format( "{0}.{1}[n]", pathTranslated_in, _elementAttribute.ElementName ), returnValue_in, anyAttribute_notJustXml, out valueHasBeenFound_out ); if (returnValue_in && valueHasBeenFound_out) { return(_output); } } } else { _output = ReflectThrough( _value, string.Format( "{0}.{1}", path_in, _elementAttribute.ElementName ), iteration_found_in, iteration_in, string.Format( "{0}.{1}", pathTranslated_in, _elementAttribute.ElementName ), returnValue_in, anyAttribute_notJustXml, out valueHasBeenFound_out ); if (returnValue_in && valueHasBeenFound_out) { return(_output); } } #endregion } else if ( _isAttribute || anyAttribute_notJustXml || ( _isElement && ( (_properties[_prop].PropertyType == typeof(string)) ) ) ) { #region XmlAttribute... if ( anyAttribute_notJustXml && !_properties[_prop].CanRead ) { continue; } try { _value = _properties[_prop].GetValue(someClass_in, null); } catch (Exception _ex) { throw new Exception(string.Format( "\n---\n{0}.{1}.ReflectThrough(\n\tsomeClass_in:\"{2}.{3}\",\n\tpath_in:\"{4}\",\n\titeration_in:\"{5}\",\n\tpathTranslated_in:\"{6}\"\n)\n---\n{7}", typeof(utils).Namespace, typeof(utils).Name, someClass_in.GetType().Namespace, someClass_in.GetType().Name, path_in, iteration_in, pathTranslated_in, _ex.Message )); } if (_value == null) { continue; } if (_isAttribute) { _attribute = (System.Xml.Serialization.XmlAttributeAttribute)Attribute.GetCustomAttributes( _properties[_prop], typeof(System.Xml.Serialization.XmlAttributeAttribute), true )[0]; _attributename = _attribute.AttributeName; } else if (_isElement) { _elementAttribute = (System.Xml.Serialization.XmlElementAttribute)Attribute.GetCustomAttributes( _properties[_prop], typeof(System.Xml.Serialization.XmlElementAttribute), true )[0]; _attributename = _elementAttribute.ElementName; } else { _attributename = _properties[_prop].Name; } if (string.Format("{0}.{1}", path_in, _attributename) == iteration_in) { valueHasBeenFound_out = true; return(_value.ToString()); } #endregion } } return(_output); }