System.Xaml.XamlXmlReader.MoveToNextStoredMember C# (CSharp) Method

MoveToNextStoredMember() private method

private MoveToNextStoredMember ( ) : bool
return bool
		bool MoveToNextStoredMember ()
		{
			if (MoveToNextMarkupExtensionAttributeMember ())
				return true;

			if (stored_member_enumerator != null) {
				// FIXME: value might have to be deserialized.
				switch (node_type) {
				case XamlNodeType.StartObject:
				case XamlNodeType.EndMember:
					// -> StartMember
					if (stored_member_enumerator.MoveNext ()) {
						current = current_member = stored_member_enumerator.Current.Key;
						node_type = XamlNodeType.StartMember;
						return true;
					}
					break;
				case XamlNodeType.StartMember:
					// -> Value or StartObject (of MarkupExtension)
					var v = stored_member_enumerator.Current.Value;
					current = v;
					// Try markup extension
					// FIXME: is this rule correct?
					if (!String.IsNullOrEmpty (v) && v [0] == '{') {
						var pai = ParsedMarkupExtensionInfo.Parse (v, xaml_namespace_resolver, sctx);
						types.Push (pai.Type);
						current = pai.Type;
						node_type = XamlNodeType.StartObject;
						markup_extension_attr_members = pai.Arguments.GetEnumerator ();
					}
					else
						node_type = XamlNodeType.Value;
					return true;
				case XamlNodeType.EndObject: // of MarkupExtension
				case XamlNodeType.Value:
					// -> EndMember
					current = null;
					node_type = XamlNodeType.EndMember;
					return true;
				}
			}

			stored_member_enumerator = null;
			return false;
		}