首页 新闻 会员 周边

类型~ Expression限制?

0
[已解决问题] 解决于 2018-02-05 14:50

见:Get();有注释一行的和没注释一行的,下面调试分别展示了结论。注释通过,非注释不能通过。

 

复制代码
    public abstract class CollectionApiController<T>:ApiController where T:class , new()
    {
        public IEnumerable<T> Collection { get; protected set; }

        //public dynamic Get() { return (Collection).Filter(((HttpContextBase)Request.Properties["MS_HttpContext"]).Request.QueryString); }
        public dynamic Get() { return DoGetWith(Collection).Filter(((HttpContextBase)Request.Properties["MS_HttpContext"]).Request.QueryString); }

        protected virtual IEnumerable<dynamic> DoGetWith(IEnumerable<T> selfCollection)
        { return selfCollection; }
}
复制代码

 

 

 

如果不进行辅助转换,正常;

转换则异常;

类型关系正常,且验证是正常的,如下图:

Filter 是一些表达式,函数接口声明如下;

核心过程:

 

除了可能是表达式存在什么什么限制,暂无思路,请知悉者不吝告知。

花飘水流兮的主页 花飘水流兮 | 专家六级 | 园豆:13560
提问于:2018-02-02 16:58
< >
分享
最佳答案
0

异常是啥被你截断了,看不见。

return 那儿是啥代码,也看不见。

这不好说啊。

奖励园豆:5
爱编程的大叔 | 高人七级 |园豆:30839 | 2018-02-02 17:19

附上这行代码了。代码很简单就几行。

异常就是不能生成表达式树,是自定义的,不是微软类库的。

System.InvalidOperationException:“Could not create expression from: LocationStart”

花飘水流兮 | 园豆:13560 (专家六级) | 2018-02-02 17:22
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册