Dab*_*rnl 31 .net sorting exception
我有一个List<T>地方T是暴露了"用户名"属性的类.用户名是封装字符串的自定义类型.我IComparable<T>在这个简单返回的自定义类型上实现了接口
this.encapsulatedString.CompareTo(other.encapsulatedString)
Run Code Online (Sandbox Code Playgroud)
我这样定义了一个ICollectionViewList:
AllUsers=CollectionViewSource.GetDefaultView(myList);
Run Code Online (Sandbox Code Playgroud)
我添加了Sortdescription:
AllUsers.SortDescriptions.Add(new SortDescription("Username",ListSortDirection.Ascending));
Run Code Online (Sandbox Code Playgroud)
在这一行,代码抛出标题中声明的异常.我可以通过其他方式排序列表没有问题.异常来自哪里?
Dab*_*rnl 51
Stupidstupidstupid:自定义类型必须实现IComparable以及IComparable<T>似乎SortDescription使用了旧式的非泛型版本的CompareTo
我会得到一些急需的睡眠......
根据我的判断,你的答案并不完全正确.我的对象根本没有实现IComarable或IComparable,它们仍然可以正常工作.我正在创建一个CollectionViewSource并添加与您类似的排序描述,但没有收到此错误.我收到错误,因为排序说明中的属性为空.一旦我修复了这一切,一切正常,没有界面.我怀疑你可能有一个不正确的属性,如果它无法访问该属性,它将回退到使用IComparable.
在我的例子中,我在Compare函数中添加了一个try/catch块,并向控制台显示了异常Message.如果比较函数中存在错误,您将获得此次要异常("无法比较两个元素......").
我的问题特别是索引到一个字符串的位置3,因为另一个错误是"".