asp.net-mvc-3 – 为什么WebGrid在格式化中使用动态?
发布时间:2020-12-16 03:52:04 所属栏目:asp.Net 来源:网络整理
导读:我正在使用ASP.NET MVC 3 Razor项目中的System.Web.Helpers.WebGrid,我无法理解为什么WebGridColumn的format参数是Func dynamic,object. 如果我创建这样的列… grid.Column( format: x = string.Format("{0:d}",x.StartDate) ); …我没有在StartDate属性上获
我正在使用ASP.NET MVC 3 Razor项目中的System.Web.Helpers.WebGrid,我无法理解为什么WebGridColumn的format参数是Func< dynamic,object>.
如果我创建这样的列… grid.Column( format: x => string.Format("{0:d}",x.StartDate) ); …我没有在StartDate属性上获得强大的输入.如果我试着像这样绕过它…… grid.Column( format: (MyObjectType x) => string.Format("{0:d}",x.StartDate) ); …我在运行时被告知我的lambda无法转换为Func< dynamic,object>.有什么方法可以在这里使用非动态lambda吗?即使它只是< object,object>? (我在.NET 4.0中,Func< in T,out TResult>应该是T的逆变,但我对协方差和逆变与动态如何一起工作感到困惑.) 解决方法
就类型系统而言,动态与对象相同.
它们不能使用强类型委托,因为它们没有要传递的强类型值. 在WebGrid中,他们从PropertyDescriptor获取一个Object,并将其传递给您的委托. 协方差在这里没有用;有Func< YourType,string>可以转换为Func< object,string>,可以用任何其他类型调用它并获得无效的强制转换. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – 如何阻止Microsoft.Sharepoint.Sandbox.dll被复
- asp.net-mvc – MVC EF4 POCO – 如何存储实体上下文?
- asp.net – 开发和测试环境最佳实践?
- asp.net-mvc – 嵌套属性的模型绑定在asp.net mvc中
- asp.net – 启用Application Insights会使Web应用程序挂起
- asp.net – ELMAH是否默认实施并启用了防洪功能?
- asp.net – 是否有可能拒绝通过Microsoft Ajax Minifier在c
- asp.net-mvc – ASP.net MVC 4从数据库加载菜单到Partial V
- ASP.net中的字符串比较(C#)
- asp.net – SeriesChartType(枚举)示例
推荐文章
站长推荐
热点阅读