Pregunta

Caso de uso:El usuario hace de la fuente personalizaciones a un objeto en la superficie de diseño, que necesito para cargar/guardar en mi almacén de datos.I. e.configuración, como Negrita, Cursiva, Tamaño de Fuente, Nombre de la necesidad de persistió.

Hay algunos más fácil (y fiable) mecanismo para convertir/leer de nuevo a partir de una representación de cadena del objeto fuente (en cuyo caso sería necesario un solo atributo)?O sea, múltiples propiedades combinado con la lógica personalizada la opción correcta?

¿Fue útil?

Solución

Uso TypeConverter:

Font font = new Font("Arial", 12, GraphicsUnit.Pixel);

TypeConverter converter = TypeDescriptor.GetConverter(typeof (Font));

string fontStr = converter.ConvertToInvariantString(font);

Font font2 = (Font) converter.ConvertFromString(fontStr);

Console.WriteLine(font.Name == font2.Name); // prints True

Si desea utilizar la serialización XML puede crear Fuente de la clase de contenedor que se va a almacenar algún subconjunto de propiedades de la Fuente.

Nota(Gishu) - Nunca acceder a un tipo de convertidor directamente.En su lugar, acceder a la adecuada convertidor mediante TypeDescriptor.Muy importante :)

Otros consejos

En el proyecto en el que estoy trabajando, me fui con las múltiples propiedades.

Puedo guardar la fuente a una tabla de base de datos por la ruptura de su nombre, el tamaño, el estilo y la unidad y, a continuación, persisten esos valores.

Recreación de la fuente en la demanda una vez que estos valores son retrived es un complemento.

¿Qué tipo de almacén de datos que usted necesita para persistir en este?Si es sólo la configuración de usuario se pueden almacenar en un archivo que podría serialise el objeto de fuente a un archivo de settings en binario o en xml (si usted quiere ser capaz de editar el fichero de configuración directamente).La seriación de los espacios de nombres (del Sistema.Xml.La serialización y el Sistema.En tiempo de ejecución.La serialización) proporcionar todas las herramientas para hacer esto sin necesidad de escribir código personalizado.

Sitio web de MSDN en XML Seriación: La Serialización XML en .Net Framework

[EDITAR]Así aparrently el objeto de fuente no es serialisable.oops :( lo Siento.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top