Mono.Xaml.ManagedXamlLoader.ConvertType C# (CSharp) Метод

ConvertType() приватный статический Метод

private static ConvertType ( MemberInfo pi, Type t, object value ) : object
pi System.Reflection.MemberInfo
t System.Type
value object
Результат object
		private static object ConvertType (MemberInfo pi, Type t, object value)
		{
			if (value == null)
				return null;

			Type valueType = value.GetType ();
			if (valueType == t)
				return value;

			try {
				if (t.IsEnum) {
					string str_value = value as string;
					if (str_value != null)
						return Enum.Parse (t, str_value, true);
					if (Enum.IsDefined (t, value))
						return Enum.ToObject (t, value);
				}
			} catch {
			}

			TypeConverter converter = Helper.GetConverterFor (pi, t);
			if (converter == null) {
				try {
					converter = new MoonlightTypeConverter (pi == null ? null : pi.Name, t);
				} catch {
					converter = null;
				}
			}

			if (converter != null && converter.CanConvertFrom (value.GetType ()))
				return converter.ConvertFrom (value);

			try {
				if (!valueType.IsSubclassOf (t))
					value = Convert.ChangeType (value, t, System.Globalization.CultureInfo.CurrentCulture);
			} catch {
			}
			
			// This will just let things fail
			return value;
		}