0

現在、IsolatedStorage から取得したデータを使用してカスタム オブジェクトのリストを作成し、それを逆シリアル化しようとしています。

昨日は完全に機能し、今日はこの例外が発生し続けます。どうすればよいかわかりません。

{System.ArgumentOutOfRangeException: Length cannot be less than zero.
Parameter name: length
at System.String.InternalSubStringWithChecks(Int32 startIndex, Int32 length, Boolean fAlwaysCopy)
at System.String.Substring(Int32 startIndex, Int32 length)
at LandbouWP.ViewModel.StoryVM.GetStories(List`1 news_items)}

データを取得して逆シリアル化するためのコード:

            var loaded_result = settings["mainlist"].ToString();

            var s = JsonConvert.DeserializeObject<List<Object>>(loaded_result);

逆シリアル化は完全に機能するので、問題はここにあるとは思いませんが、リストに別のプロパティまたは何かを追加する可能性がありますか?

次に、返品されたアイテムのカスタム リストを作成します

   App.StoryViewModel.GetStories(s);

そのコードは次のとおりです。

  public void GetStories(List<Object> news_items)
    {
        List<Story> a = new List<Story>();
        List<Story> b = new List<Story>();

        //loop over all items and add them for a viewmodel
        int i = 0;
        foreach (var item in news_items)
        {
            if (item.IsDeleted == true)
            {
                //do not add the item
            }
            else
            {
                try
                {
                    a.Add(new Story
                    {
                        ID = news_items[i].ID,
                        IsDeleted = news_items[i].IsDeleted,
                        IsActive = news_items[i].IsActive,
                        Title = news_items[i].Title,
                        Author = news_items[i].Author,
                        Synopsis = news_items[i].Synopsis,
                        Body = news_items[i].Body,
                        ImageUrl = news_items[i].ImageUrl,
                        //CreationDate = DateTime.Parse(news_items[i].CreationDate),
                        CreationDate = news_items[i].CreationDate.Substring(0, news_items[i].CreationDate.IndexOf('T')),
                        LastUpdateDate = news_items[i].LastUpdateDate.Substring(0, news_items[i].LastUpdateDate.IndexOf('T')),
                        DisplayUntilDate = news_items[i].DisplayUntilDate.Substring(0, news_items[i].DisplayUntilDate.IndexOf('T')),
                        TotalViews = news_items[i].TotalViews,
                        Gallery = news_items[i].Gallery
                    });
                    i++;
                }
                catch (Exception ex)
                {
                    string msg = ex.ToString();
                    string msg2 = msg;
                }

            }
        }

        //try here to remove duplicates?
        foreach (var item in a)
        {
            if (!b.Contains(item))
            {
                b.Add(item);
            }
            else
            {
                b.Remove(item);
            }
        }

        var new_list = b.OrderByDescending(x => x.CreationDate).ToList();

        //save all the stories
        story = new_list;

設定しようとしている各項目を個別に確認することさえできません。長さをゼロ未満にすることはできず、何について話しているのかわかりません。クラスに長さという名前のパラメーターがありませんか?

4

1 に答える 1

1

この場所をよく確認してください

CreationDate = news_items[i].CreationDate.Substring(0, news_items[i].CreationDate.IndexOf('T')),
LastUpdateDate = news_items[i].LastUpdateDate.Substring(0, news_items[i].LastUpdateDate.IndexOf('T')),
DisplayUntilDate = news_items[i].DisplayUntilDate.Substring(0, news_items[i].DisplayUntilDate.IndexOf('T')),

あなたの日付の1つが間違った形式で、「T」がないと思います

于 2013-08-15T11:15:07.540 に答える