Mono.Xaml.XamlPropertySetter.ConvertValue C# (CSharp) 메소드

ConvertValue() 공개 메소드

public ConvertValue ( Type type, object value ) : object
type System.Type
value object
리턴 object
		public object ConvertValue (Type type, object value)
		{
			if (value == null)
				return null;

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

			TypeConverter converter = Converter;
			if (converter == null) {
				try {
					converter = new XamlTypeConverter (Parser, Element, Name, type);
				} catch {
					converter = null;
				}
			}

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

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

Usage Example

예제 #1
0
파일: XamlParser.cs 프로젝트: dfr0/moon
		private object ParseAttributeMarkup (XamlObjectElement element, XamlPropertySetter property, XamlAttribute ai)
		{
			MarkupExpressionParser parser = new SL4MarkupExpressionParser (element.Object, property.Name, this, element);

			string expression = ai.Value;
			object o = null;

			try {
				o = parser.ParseExpression (ref expression);
			} catch (Exception e) {
				throw ParseException ("Could not convert attribute value '{0}' on element {1} for property {2}.", ai.Value, element.Name, property.Name);
			}

			if (o == null && !MarkupExpressionParser.IsExplicitNull (expression))
				throw ParseException ("Unable to convert attribute value: '{0}'.", ai.Value);

			return property.ConvertValue (property.Type, o);
		}