Pregunta

Tengo una clase, que contiene una Brush MyBrush propiedad marcada como [XmlIgnore]. No obstante, es de serie en la corriente causando problemas al intentar leer a través de XamlReader.

I hizo algunas pruebas, por ejemplo, cuando se cambia la visibilidad de la propiedad (al interior) que se ha ido en la corriente. Por desgracia, no puedo hacer esto en mi escenario particular.

  1. ¿Alguien tiene el mismo problema y?
  2. ¿Ve alguna forma de evitar esto?

Observación: C # 4.0 en lo que puedo decir

Este es un método de mi prueba de unidad en la que ponen a prueba la XamlSerialization:

            // buffer to a StringBuilder
            StringBuilder sb = new StringBuilder();
            XmlWriter writer = XmlWriter.Create(sb, settings);
            XamlDesignerSerializationManager manager = new XamlDesignerSerializationManager(writer) {XamlWriterMode = XamlWriterMode.Expression};

            XamlWriter.Save(testObject, manager);
            xml = sb.ToString();
            Assert.IsTrue(!String.IsNullOrEmpty(xml) && !String.IsNullOrEmpty(xml), "Xaml Serialization failed for " + testObject.GetType() + " no xml string available");

            xml = sb.ToString();
            MemoryStream ms = xml.StringToStream();
            object root = XamlReader.Load(ms);
            Assert.IsTrue(root != null, "After reading from MemoryStream no result for Xaml Serialization");

En una de mis clases utilizo el Brush propiedad. En el código anterior Pruebas de esta unidad no funciona debido a un objeto Brush (no serializable) es el valor. Cuando quito el Setter (como abajo), pasa la prueba unitaria.

Uso de la XmlWriter (básicamente misma prueba que el anterior) funciona. En el StringBuffer sb puedo ver que Property Brush se serializa cuando el organismo está ahí y no cuando se retiran (lo más probable otro cheque haciendo caso omiso de la propiedad debido a ningún colocador). Otras propiedades con [XmlIgnore] se ignoran como se pretende.

    [XmlIgnore]
    public Brush MyBrush
    {
        get { ..... }
        // removed because of problem with Serialization
        // set { ... }
    }
¿Fue útil?

Solución

Comentario de Juan es correcta. Hay (de nuevo) otros atributos. He encontrado este excelente artículo aquí: http: // blogs. msdn.com/b/mikehillberg/archive/2006/09/16/xamlwriter.aspx

Incluso se encontró con el atributo antes [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] , Pero mal interpretado como un atributo de tiempo de diseño.

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