Generic UpdateModel <T>与MVC'Controller'中的UpdateModel有何不同?

Sim*_*ver 1 asp.net-mvc model

ASP.NET MVC控制器类中的UpdateModel有很多重载.

其中一些是通用的,有些则不是.

显然我想使用通用版本,但我不知道它实际上对我有什么影响?UpdateModel不是一种使用反射填充属性的方法.

那么这有什么区别:

        UpdateModel<ContestModel>(model);
Run Code Online (Sandbox Code Playgroud)

        UpdateModel(model);
Run Code Online (Sandbox Code Playgroud)

如果它知道类型,反射会更快一点 - 还是有另一个原因?

tho*_*sjo 6

UpdateModel没有泛型类型签名,不存在任何重载.你所看到的,编译器是多么聪明.当调用具有通用签名的方法并且其中一个参数是相同的泛型类型时,编译器会为您推断出类型.

换句话说,您发布的那两个示例在编译器眼中完全相同.