当我的应用程序关闭,我想序列化的一些数据,使之持续以备下次使用的应用程序。 我选择序列化这些数据与Newtonsoft.JsonConverter。 但是,我有一个BitmapImage的在我的课,它不能被序列化。
我有点停留在这一点,因为我没有找到一个解决方案,以保持我的BitmapImage到我的课(我需要保持它在这里),并能够序列化这个类。 我试图创建一个继承的类,它包含了BitmapImage的,但我不能从我的基类中创建一个隐含的操作。
我想在我的类的对象,其可用于为一个图像结合的来源,并能够序列化这个类。
我建议只是“保存位图文件”,只有序列化的图像文件名。
但是,如果你必须序列位图,只需将位图保存到一个MemoryStream为字节[]。
byte[] byteArray;
using (MemoryStream stream = new MemoryStream())
{
Image.Save(stream, ImageFormat.Bmp);
byteArray = stream.ToArray();
}
更新:
通过图像路径序列图像。
private string m_imagePath;
public Image Image { get; private set; }
public string ImagePath
{
get { return m_imagePath; }
set
{
m_imagePath = value;
Image = Image.FromFile(m_imagePath);
}
}
更新:
[JsonObject(MemberSerialization.OptIn)]
public class MyClass
{
private string m_imagePath;
[JsonProperty]
public string Name { get; set; }
// not serialized because mode is opt-in
public Image Image { get; private set; }
[JsonProperty]
public string ImagePath
{
get { return m_imagePath; }
set
{
m_imagePath = value;
Image = Image.FromFile(m_imagePath);
}
}
}
正如你所看到的,你有一个JSON对象这里,有选入的属性,这意味着你需要指定哪些属性进行序列化。
该演示对象都有一个序列化Name属性,这是一个序列化的属性的ImagePath。
然而,图像属性不是序列。
当你反序列化对象的图像将加载,因为ImagePath的制定者有必要的funcionality。
我希望这有助于,我测试了它,和它的作品。
率,如果你喜欢。 祝好运!
文章来源: Method to serialize a class which contain BitmapImage : using 2 inherited class?