C# HTML助手lambda查询
我有一个关于如何计算lambda表达式中的参数类型的查询 如果我们查询的是Customer类型的IEnumerable,并且有customers.Where(c=>c.City==“London”)这样的语句,那么c是Customer类型的 在ASP.NET MVC 3中使用的HTML帮助程序中,如果在强类型视图中有类似HTML.TextBoxFor(c=>c.Foo)的语句,则c是视图绑定的类型 我不明白的是编译器和VisualStudioIntelliSense如何知道lambda中参数的类型。MSDN文档说“编译器可以根据lambda主体、底层委托类型以及C语言规范中描述的其他因素推断类型”。但是,我不知道lambda主体或委托类型如何允许编译器确定参数的数据类型C# HTML助手lambda查询,c#,asp.net-mvc-3,C#,Asp.net Mvc 3,我有一个关于如何计算lambda表达式中的参数类型的查询 如果我们查询的是Customer类型的IEnumerable,并且有customers.Where(c=>c.City==“London”)这样的语句,那么c是Customer类型的 在ASP.NET MVC 3中使用的HTML帮助程序中,如果在强类型视图中有类似HTML.TextBoxFor(c=>c.Foo)的语句,则c是视图绑定的类型 我不明白的是编译器和VisualStudioIntelliSense如何知道lambda中参数的类
干杯,如果您查看etc的类型,您会发现参数1不是
Func
(已编译的委托),而是可以在运行时从中编译委托的数据结构
或者直接检查它在做什么。在本例中,确保它实际上是一个access表达式,然后读取属性的名称以允许HTML引用该名称,然后再获取一个委托以获取属性的值
1作为扩展方法,第一个参数是它应用的类型,第二个声明的参数是声明时的第一个参数。如果查看etc的类型,您会发现参数1不是
Func
(编译委托),但实际上它是一种数据结构,委托可以在运行时从中编译
或者直接检查它在做什么。在本例中,确保它实际上是一个access表达式,然后读取属性的名称以允许HTML引用该名称,然后再获取一个委托以获取属性的值
1作为扩展方法,第一个参数是它应用的类型,第二个声明的参数是声明时的第一个参数。Description 他们知道这一点,因为该方法定义了一个表达式 样品 此方法需要一个表达式,该表达式将导致double类型的属性
public static MvcHtmlString MethodName<TModel>(
this HtmlHelper<TModel> instance,
TModel model,
Expression<Func<TModel,double>> selector)
{
}
public静态MvcHtmlString方法名(
此HtmlHelper实例,
TModel模型,
表达式选择器)
{
}
更多信息
public static MvcHtmlString MethodName<TModel>(
this HtmlHelper<TModel> instance,
TModel model,
Expression<Func<TModel,double>> selector)
{
}
public静态MvcHtmlString方法名(
此HtmlHelper实例,
TModel模型,
表达式选择器)
{
}
更多信息