You often read on the web that the DependencyObject
s are not marked as serializable and that this is a major drawback...
But there is an easy way to perform serialization of these objects: use XAMLWriter
and XAMLReader
:
public class MyDependencyObject : DependencyObject
{
public static readonly DependencyProperty MyDependencyPropertyProperty =
DependencyProperty.Register("MyDependencyProperty",
typeof(String), typeof(MyDependencyObject));
public String MyDependencyProperty
{
get { return (String)GetValue(MyDependencyObject.MyDependencyPropertyProperty); }
set { SetValue(MyDependencyObject.MyDependencyPropertyProperty, value); }
}
}
...
MyDependencyObject obj = new MyDependencyObject();
obj.MyDependencyProperty = "One love";
String serializedString = XamlWriter.Save(obj);
Console.WriteLine(serializedString);
It will produce something like this:
<MyDependencyObject MyDependencyProperty="One love"
xmlns="clr-namespace:ANTOINE.Jonathan;assembly=ANTOINE.Jonathan" />
CodeProject