Brush MyBrush
[XmlIgnore]
olarak işaretlenmiş bir özellik içeren bir sınıfım var. Yine de, XamlReader
aracılığıyla okumaya çalışırken sorun oluĢturan dizinde oluĢturulur. Bazı testler yaptım, örn. Mülkün görünürlüğünü değiştirirken (dahili), akışta gider. Maalesef bu senaryoda bunu yapamıyorum.C# Öznitelik XmlIgnore ve XamlWriter sınıfı - XmlIgnore çalışmıyor
- Aynı sorunu olan var mı?
- Bu konu üzerinde çalışmanın herhangi bir yolunu görüyor musunuz?
Not:
// 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");
benim sınıfların birinde kullandığım Mülkiyet: C# 4.0 bildiğim kadarıyla bu ben XamlSerialization
test ederim benim Birim Testi gelen bir yöntemdir
söyleyebilir Brush
. Yukarıdaki kodda bu Birim Testleri başarısız olur, çünkü Brush
nesnesi (seri hale getirilemez) değerdir. Setter'ı çıkardığımda (aşağıdaki gibi), Birim Testi geçer.
XmlWriter
'u (yukarıdakiyle aynı test) kullanarak çalışır. StringBuffer sb
'da, Property Brush
'un, Ayarlayıcı oradayken ve kaldırıldığında değil (büyük olasılıkla ayarlanmış olmadığından dolayı Mülk'ü göz ardı eden başka bir denetim) serileştirildiğini görebiliyorum. [XmlIgnore]
ile Diğer Özellikler amaçlandığı gibi göz ardı edilir.
[XmlIgnore]
public Brush MyBrush
{
get { ..... }
// removed because of problem with Serialization
// set { ... }
}
XmlSerializer ile seri hale getiriyor musunuz? – gsharp
Daha fazla bilgi vermeniz gerekir (kaynak kodu gibi). Sorun şu ki tekrarlanamaz: '[XmlIgnore]' özniteliği, kullandığım her seferinde benim için iyi çalışır. –
Bazı ayrıntıları sağladım –