Rya*_*ndy 6 lambda dynamic .net-4.0 webgrid asp.net-mvc-3
我正在使用System.Web.Helpers.WebGridASP.NET MVC 3 Razor项目,我无法理解为什么a的格式参数WebGridColumn是a Func<dynamic, object>.
如果我创建这样的列...
grid.Column(
format: x => string.Format("{0:d}", x.StartDate)
);
Run Code Online (Sandbox Code Playgroud)
...我没有在StartDate属性上获得强大的输入.如果我试着像这样绕过它......
grid.Column(
format: (MyObjectType x) => string.Format("{0:d}", x.StartDate)
);
Run Code Online (Sandbox Code Playgroud)
...我在运行时被告知我的lambda不能被强制转换为Func<dynamic, object>.有什么方法可以在这里使用非动态lambda吗?即使它只是<object, object>?
(我在.NET 4.0中,并且Func<in T, out TResult>应该是T的逆变,但我对协方差和逆变与动态如何一起工作感到困惑.)
就类型系统而言,dynamic与 相同object。
它们无法使用强类型委托,因为它们没有要传递的强类型值。
在内部WebGrid,他们Object从 a获取一个PropertyDescriptor,并将其传递给您的代表。
协方差在这里没有帮助;已Func<YourType, string>转换为Func<object, string>,则可以使用任何其他类型调用它并获得无效的强制转换。
| 归档时间: |
|
| 查看次数: |
1589 次 |
| 最近记录: |