教程问题 - 从/向磁盘序列化数据

时间:2016-09-09 10:39:06

标签: wpf catel

因此,我正在尝试通过Catel'开始使用'这里的例子:

https://catelproject.atlassian.net/wiki/display/CTL/Getting+started+with+WPF

但是我在第3步(在磁盘上将数据序列化)中的visual studio中出现了一些错误 - https://catelproject.atlassian.net/wiki/pages/viewpage.action?pageId=15630363

我创建了一个顶级容器'模型名为'设置'和一个儿童班'这被称为“全球” (除了较少的属性和不同的模型名称之外,几乎与教程完全相同)。

我根据示例创建了一个接口:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using App.Models;

namespace App.Services.Interfaces
{
    public interface IGlobalService
    {
        IEnumerable<Global> LoadGlobals();
        void SaveGlobals(IEnumerable<Global> globals);
    }
}

然后我创建服务实现:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using Catel.Collections;
using Catel.Data;
using App.Models;
using App.Services.Interfaces;

namespace App.Services
{
    public class GlobalService : IGlobalService
    {
        private readonly string _path;

        public GlobalService()
        {
            string directory = Catel.IO.Path.GetApplicationDataDirectory("CatenaLogic", "WPF.GettingStarted");

            _path = Path.Combine(directory, "global.xml");
        }

        public IEnumerable<Global> LoadGlobals()
        {
            if (!File.Exists(_path))
            {
                return new Global[] { };
            }

            using (var fileStream = File.Open(_path, FileMode.Open))
            {
                var settings = Settings.Load(fileStream, SerializationMode.Xml);
                return settings.Globals;
            }
        }

        public void SaveGlobals(IEnumerable<Global> globals)
        {
            var settings = new Settings();
            settings.Globals.ReplaceRange(globals);
            settings.Save(_path, SerializationMode.Xml);
        }
    }
} 
然后,Visual Studio会抛出2个错误并发出警告:

  

错误CS0619&#39; SavableModelBase.Load(Stream,   SerializationMode)&#39;已过时:&#39;请改用Load(Stream, SerializationMode, ISerializationConfiguration)。将会   在版本中删除   。5.0.0&#39;

     

错误CS0619&#39; SavableModelBase.Save(字符串,   SerializationMode)&#39;已过时:&#39;请改用Save(string, SerializationMode, ISerializationConfiguration)。将会   已在5.0.0版本中删除。&#39;

     

警告CS0618&#39; CollectionExtensions.ReplaceRange(ObservableCollection,   的IEnumerable)&#39;已过时:&#39;请改用ReplaceRange(this ICollection<T>, IEnumerable<T>)。将被视为错误   从版本5.0.0。将在5.0.0版本中删除。&#39;

到目前为止,我对此所做的所有研究都是空白。什么是'ISerializationConfiguration&#39;以及如何实施它?我错过了一些明显的东西吗?

设置为:

  • Visual Studio 2015社区(14.0.25425.01 Update 3)
  • 项目定位.NET 4.5.2
  • 使用New&gt;初始化项目在线&gt;使用Catel的WPF应用程序
  • 的NuGet:
    • Catel.Core 4.5.3
    • Catel.Extensions.Controls 4.5.3
    • Catel.MVVM 4.5.3
    • Catel.Fody 2.14.0

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

使用错误/警告指定的重载:

Load(stream, null);
Save(stream, null);