【问题标题】:silverlight isolated storage - not persisting across application restartssilverlight 隔离存储 - 不会在应用程序重新启动时持续存在
【发布时间】:2010-08-14 05:27:24
【问题描述】:

由于某种原因,每次我重新启动(在浏览器中)silverlight 应用程序时,隔离存储中都没有密钥。

我什至用下面的代码用香草模板尝试过这个。 我检查过的东西:

  1. 始终使用同一个端口

  2. 在启动时,应用程序始终在隔离存储中创建条目(从不持久化)

  3. 关闭时,密钥始终存在于隔离存储中

代码:-

 namespace SilverlightApplication1  
 {

    public partial class MainPage : UserControl, INotifyPropertyChanged
    {

        private string _ChildCount;
        public string ChildCount
        {
            get { return _ChildCount; }
            set { NotifyPropertyChangedHelper.SetProperty(this, ref _ChildCount, value, "ChildCount", PropertyChanged); }
        }


        public MainPage()
        {
            InitializeComponent();
            SaveData();

        }

        ~MainPage()
        {
            CheckData();
        }

        private void SaveData()
        {
            if (!IsolatedStorageSettings.ApplicationSettings.Contains("childCheck"))
            {
                IsolatedStorageSettings.ApplicationSettings.Add("childCheck", Parent.Create(5, 5));
                ChildCount = "Created Children(5)";
            }
            else
                CheckData();
        }

        private void CheckData()
        {
            if (IsolatedStorageSettings.ApplicationSettings.Contains("childCheck"))
            {
                if (((Parent)IsolatedStorageSettings.ApplicationSettings["childCheck"]).Children.Length == 5)
                    ChildCount = "Children Present";
                else
                    ChildCount = "Parent present without children";
            }
            else
                ChildCount = "Children not found";
        }



        public class Parent
        {
            public int Id { get; private set; }
            public Child[] Children { get; private set; }
            private Parent() { }

            public static Parent Create(int id, int childCount)
            {
                var result = new Parent
                {
                    Id = id,
                    Children = new Child[childCount]
                };

                for (int i = 0; i < result.Children.Length; i++)
                    result.Children[i] = Child.Create(i);

                return result;
            }

        }

        public class Child
        {
            public int Id { get; private set; }
            private Child() { }

            public static Child Create(int id)
            {
                return new Child { Id = id };
            }
        }

        public event PropertyChangedEventHandler PropertyChanged;
    }
}

欢迎任何帮助。

【问题讨论】:

    标签: silverlight silverlight-4.0 isolatedstorage


    【解决方案1】:

    为了将对象序列化到应用程序设置中,每种涉及的类型(在您的情况下为 ParentChild)都必须具有公共默认构造函数,并且需要序列化的属性必须具有公共 getter 和 setter 过程。

    您可以通过使用System.Runtime.Serialization 命名空间中的一些属性(例如DataMember)来获得一些额外的控制权。

    此外,您还没有被称为 IsolatedStorageSettings.ApplicationSettings.Save,所以无论如何都不会出现在商店中。

    【讨论】:

      猜你喜欢
      • 2022-06-10
      • 1970-01-01
      • 1970-01-01
      • 2016-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      相关资源
      最近更新 更多