如何解决为什么System.Linq.Dynamic.Core OrderBy无法与ImmutableArray一起使用?
我正在尝试将System.Linq.Dynamic.Core与ImmutableArray一起用于动态OrderBy,但出现以下异常:
Expression of type 'System.Collections.Immutable.ImmutableArray`1[$customType]' cannot be used for parameter of type 'System.Collections.Generic.IEnumerable`1[$customType]' of method 'System.Linq.IOrderedEnumerable`1[$customType] OrderByDescending[$customType,Int32](System.Collections.Generic.IEnumerable`1[$customType],System.Func`2[$customType,System.Int32])' (Parameter 'arg0')
这是为什么?他们是否为不可变类型定义了特定的验证?普通OrderBy完全有能力对其进行排序。应该将其作为功能请求提交给他们,还是我遗漏了一些明显的东西?将其投射到列表后,它就像一个超级按钮。
解决方法
这似乎是.Net(核心)中的错误,尤其是在Expression.Call
的参数验证中。
最终,第一个参数通过调用TypeUtils.AreReferenceAssignable
进行验证,并且代码假定值类型不能(引用)可分配给非值类型,并且ImmutableArray
是值类型,因为它是用struct
实现。
我在github上打开an issue来看看别人的想法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。