C#属性XmlIgnore和XamlWriter类 - XmlIgnore不工作

我有一个类,包含一个标记为
[XmlIgnore]
的属性
Brush MyBrush
。然而,它在流中被序列化,在尝试通过ѭ2读取时会造成麻烦。 我做了一些测试,例如当改变Property的可见性(到内部)时,它在流中消失了。不幸的是,在我的特定情况下,我不能这样做。 有没有人有同样的问题? 你有没有办法解决这个问题? 备注:据我所知,C#4.0 这是我单元测试的一种方法,我测试
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");
在我的一个课程中,我使用了属性
Brush
。在上面的代码中,单元测试失败,因为
Brush
对象(不可序列化)是值。当我移除Setter(如下所示)时,单元测试通过。 使用
XmlWriter
(与上面基本相同的测试),它的工作原理。在
StringBuffer sb
中我可以看到
Property Brush
在Setter存在时序列化而不是在被移除时(很可能是因为没有setter而忽略该属性的另一个检查)。其他具有
[XmlIgnore]
的属性将按预期被忽略。
    [XmlIgnore]
    public Brush MyBrush
    {
        get { ..... }
        // removed because of problem with Serialization
        // set { ... }
    }
    
已邀请:
约翰的评论是正确的。还有(再次)其他属性。我在这里找到了这篇优秀的文章:http://blogs.msdn.com/b/mikehillberg/archive/2006/09/16/xamlwriter.aspx 我甚至之前遇到过属性
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
,但将其误解为设计时属性。     

要回复问题请先登录注册