Brush MyBrush
이 [XmlIgnore]
으로 표시된 속성이 포함 된 클래스가 있습니다. 그럼에도 불구하고 스트림에서 직렬화되어 XamlReader
을 통해 읽을 때 문제가 발생합니다.C# 속성 XmlIgnore 및 XamlWriter 클래스 - XmlIgnore가 작동하지 않습니다.
몇 가지 테스트를 수행했습니다. 속성의 가시성을 내부로 변경하면 스트림에서 사라집니다. 불행히도 나는 나의 특별한 시나리오에서 이것을 할 수 없다.
- 누구에게도 동일한 문제가 있습니까?
- 이 문제를 해결할 방법이 있습니까?
비고 :
// 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");
내 클래스 중 하나에서 내가 사용하는 속성 : C# 4.0은 지금까지의 내가이 내가 XamlSerialization
을 테스트합니까 내 단위 테스트에서 방법이다
알 수 있습니다 Brush
. 위 코드에서 Brush
객체 (직렬화 가능하지 않음)가 값이기 때문에이 단위 테스트가 실패합니다. Setter를 제거하면 (아래 참조) 단위 테스트가 통과됩니다.
XmlWriter
(기본적으로 위와 동일한 테스트)을 사용하면 작동합니다. StringBuffer sb
에서는 Setter가있을 때 Property Brush
이 직렬화 된 것을 볼 수 있으며 제거되지 않은 경우 (설정자가 없기 때문에 속성을 무시할 확률이 높습니다). [XmlIgnore]
의 기타 속성은 의도 한대로 무시됩니다.
[XmlIgnore]
public Brush MyBrush
{
get { ..... }
// removed because of problem with Serialization
// set { ... }
}
XmlSerializer로 serialize 하시겠습니까? – gsharp
소스 코드와 같은 더 많은 정보를 제공해야합니다. 문제는 재현 할 수 없다 :'[XmlIgnore]'속성은 내가 그것을 사용할 때마다 잘 동작한다. –
일부 내용을 입력했습니다 –