1

Android ターゲットの mvvmcross での RIO バインディングに問題があります。

私はかなり単純なモデルを持っています:

public class RJParagraph : MvxNotifyPropertyChanged
    {
        public INC<String> Title = new NC<string>();

        //public INC<DateTime> LastSeen = new NC<DateTime>();
        private DateTime _lastSeen;

        public DateTime LastSeen
        {
            get { return _lastSeen; }
            set
            {
                _lastSeen = value;
                RaisePropertyChanged(() => LastSeen);
            }
        }

// constructor etc 
}

また、次の LINQ クエリを含む Core プロジェクトに Service があります。ここで、refdate は DateTime.Now.AddDays(-30) です。

mylist.Where(f => f.LastSeen > refdate).OrderByDescending(f => f.LastSeen)

コメント行 (RIO Datetime フィールド) を使用すると、Nunit テストは正常に実行されますが、このクエリを実行すると、Android アプリは Interface not supported (comparison) をトリガーします。NUnit テストは正常に実行されます。(注: Rio を使用する場合、LastSeen.Value は LINQ クエリで使用されます)

上記のように非RIOバージョンを使用すると、意図したとおりにすべて正常に動作します。

私はこれを回避する方法の手がかりを探していました...多分他の誰かが私にいくつかの指針を与えることができますか? 前もって感謝します。

(ところで、このフレームワークへの取り組みに対する私の賛辞)

更新:完全なエラー:

System.ArgumentException: does not implement right interface
07-18 11:31:29.730 I/MonoDroid(20500): UNHANDLED EXCEPTION: System.ArgumentException: does not implement right interface
07-18 11:31:29.730 I/MonoDroid(20500): at System.Collections.Generic.Comparer`1/DefaultComparer<Cirrious.MvvmCross.FieldBinding.INC`1<System.DateTime>>.Compare (Cirrious.MvvmCross.FieldBinding.INC`1<System.DateTime>,Cirrious.MvvmCross.FieldBinding.INC`1<System.DateTime>) <0x004e8>
07-18 11:31:29.730 I/MonoDroid(20500): at System.Linq.SortSequenceContext`2<JaarverslaggevingApp.Core.Models.RJParagraph, Cirrious.MvvmCross.FieldBinding.INC`1<System.DateTime>>.Compare (int,int) <0x000e3>
07-18 11:31:29.730 I/MonoDroid(20500): at System.Linq.QuickSort`1<JaarverslaggevingApp.Core.Models.RJParagraph>.CompareItems (int,int) <0x00067>
07-18 11:31:29.730 I/MonoDroid(20500): at System.Linq.QuickSort`1<JaarverslaggevingApp.Core.Models.RJParagraph>.MedianOfThree (int,int) <0x000df>
07-18 11:31:29.730 I/MonoDroid(20500): at System.Linq.QuickSort`1<JaarverslaggevingApp.Core.Models.RJParagraph>.Sort (int,int) <0x000f7>
07-18 11:31:29.730 I/MonoDroid(20500): at System.Linq.QuickSort`1<JaarverslaggevingApp.Core.Models.RJParagraph>.PerformSort () <0x000f7>
07-18 11:31:29.730 I/MonoDroid(20500): at System.Linq.QuickSort`1/<Sort>c__Iterator39<JaarverslaggevingApp.Core.Models.RJParagraph>.MoveNext () <0x0019f>
07-18 11:31:29.730 I/MonoDroid(20500): at System.Linq.Enumerable/<CreateTakeIterator>c__Iterator30`1<JaarverslaggevingApp.Core.Models.RJParagraph>.MoveNext () <0x004cf>
07-18 11:31:29.730 I/MonoDroid(20500): at System.Collections.Generic.List`1<JaarverslaggevingApp.Core.Models.RJParagraph>.AddEnumerable (System.Collections.Generic.IEnumerable`1<JaarverslaggevingApp.Core.Models.RJParagraph>) <0x0016b>
07-18 11:31:29.730 I/MonoDroid(20500): at System.Collections.Generic.List`1<JaarverslaggevingApp.Core.Models.RJParagraph>..ctor (System.Collections.Generic.IEnumerable`1<JaarverslaggevingApp.Core.Models.RJParagraph>) <0x001bb>
07-18 11:31:29.730 I/MonoDroid(20500): at JaarverslaggevingApp.Core.Services.MockTocService.History () <IL 0x000a7, 0x004af>
07-18 11:31:29.730 I/MonoDroid(20500): at JaarverslaggevingApp.Core.ViewModels.IndexHistoryViewModel..ctor (JaarverslaggevingApp.Core.Services.IGetTocService) <IL 0x00016, 0x00113>
07-18 11:31:29.730 I/MonoDroid(20500): at JaarverslaggevingApp.UI.Android.Fragments.IndexHistoryFragment.OnCreateView (Android.Views.LayoutInflater,Android.Views.ViewGroup,Android.OS.Bundle) [0x0000b] in f:\JaarverslaggevingApp\JaarverslaggevingApp\JR_Android\Views\Fragments\IndexHistoryFragment.cs:25
07-18 11:31:29.730 I/MonoDroid(20500): at Android.Support.V4.App.Fragment.n_OnCreateView_Landroid_view_LayoutInflater_Landroid_view_ViewGroup_Landroid_os_Bundle_ (intptr,intptr,intptr,intptr,intptr) [0x00021] in /Users/builder/data/lanes/monodroid-lion-bs1/0cc7ae3b/source/monodroid-bindings/Compatibility-v4/bindings/obj/platform-15/src/generated/Android.Support.V4.App.Fragment.cs:953
07-18 11:31:29.730 I/MonoDroid(20500): at (wrapper dynamic-method) object.bd483370-f096-4010-b752-21dc83bc68f2 (intptr,intptr,intptr,intptr,intptr) <IL 0x00023, 0x00063>
Unhandled Exception:
4

2 に答える 2

1

常に人為的エラーの問題があり、何時間も困惑させられます:(別の問題のためにすべてのRIOコードを削除しました(最終的にはRIOの問題ではありませんでした)。最初は.Valueをどこにでも追加しました。しかし、RIO コードを復元した後、コンパイラーがエラーでコードを報告したところに .Value のみを追加しました. refdate との Date の比較は報告されましたが、.OrderByDescending は報告されませんでした。 ...

自分のリポジトリを見ると、自分を責めることしかできません:)

スチュアートの努力に感謝します。

于 2013-07-18T09:44:06.373 に答える