System.Xaml.XamlObjectWriterInternal.StoreAppropriatelyTypedValue C# (CSharp) Method

StoreAppropriatelyTypedValue() private method

private StoreAppropriatelyTypedValue ( object obj, object keyObj ) : void
obj object
keyObj object
return void
		void StoreAppropriatelyTypedValue (object obj, object keyObj)
		{
			var ms = CurrentMemberState; // note that this retrieves parent's current property for EndObject.
			if (ms != null) {
				var state = object_states.Peek ();
				var parent = state.Value;
				var xt = state.Type;
				var xm = ms.Member;
				if (xm == XamlLanguage.Initialization) {
					state.Value = GetCorrectlyTypedValue (xt, obj);
					state.IsInstantiated = true;
				} else if (xm.IsEvent) {
					ms.Value = (string) obj; // save name of value delegate (method).
					state.IsInstantiated = true;
				} else if (xm.Type.IsXData) {
					var xdata = (XData) obj;
					var ixser = xm.Invoker.GetValue (state.Value) as IXmlSerializable;
					if (ixser != null)
						ixser.ReadXml ((XmlReader) xdata.XmlReader);
				}
				else if (xm == XamlLanguage.Base)
					ms.Value = GetCorrectlyTypedValue (xm.Type, obj);
				else if (xm == XamlLanguage.Name || xm == xt.GetAliasedProperty (XamlLanguage.Name))
					ms.Value = GetCorrectlyTypedValue (XamlLanguage.String, obj);
				else if (xm == XamlLanguage.Key)
					state.KeyValue = GetCorrectlyTypedValue (xt.KeyType, obj);
				else {
					if (!AddToCollectionIfAppropriate (xt, xm, parent, obj, keyObj)) {
						if (!xm.IsReadOnly)
							ms.Value = GetCorrectlyTypedValue (xm.Type, obj);
					}
				}
			}
		}