/// <summary> /// 在给定 Object 的一组属性值的情况下重新创建该对象 /// </summary> /// <param name="context"></param> /// <param name="propertyValues"></param> /// <returns></returns> public override object CreateInstance(ITypeDescriptorContext context, IDictionary propertyValues) { if (propertyValues == null) { throw new ArgumentNullException("NullParameter"); } TypeXmlFont font = new TypeXmlFont(); font.FontFamily = propertyValues["FontFamily"].ToString(); font.Size = (float)propertyValues["Size"]; font.Style = (FontStyle)Enum.Parse(typeof(FontStyle), propertyValues["Style"].ToString()); return(font); }
/// <summary> /// 将给定值对象转换为指定的类型 /// </summary> /// <param name="context"></param> /// <param name="culture"></param> /// <param name="value"></param> /// <param name="destinationType"></param> /// <returns></returns> public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType) { TypeXmlFont font = value as TypeXmlFont; if (font != null) { // 转成String if ((destinationType == typeof(string))) { return(font.ToString()); } } // 基类的ConvertTo()必须调用 return(base.ConvertTo(context, culture, value, destinationType)); }
/// <summary> /// 将给定值转换为此转换器的类型 /// </summary> /// <param name="context"></param> /// <param name="culture"></param> /// <param name="value"></param> /// <returns></returns> public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) { // 从String转换 string fontValue = (string)value; if (fontValue != null) { try { TypeXmlFont newFont = new TypeXmlFont(); string[] fontParts = fontValue.Split(new char[] { ',' }); newFont.FontFamily = fontParts[0].Trim(); newFont.Size = (float)Convert.ToDouble(fontParts[1].Trim()); newFont.Style = (FontStyle)Enum.Parse(typeof(FontStyle), fontParts[2].Trim()); return(newFont); } catch { throw; } } return(base.ConvertFrom(context, culture, value)); }