2009-01-31 48 views
1

ASP.NET MVC控制器類中的UpdateModel有許多重載。泛型UpdateModel <T>與MVC'Controller'中的UpdateModel有什麼不同?

其中一些是通用的,有些不是。

顯然我想使用通用版本,但我沒有看到它爲我實際做了什麼? 不是UpdateModel只是一種使用反射填充屬性的方法。

那麼這是什麼之間的區別:

 UpdateModel<ContestModel>(model); 

 UpdateModel(model); 

是反射只是有點快,如果它知道類型 - 或者是有其他的原因?

回答

6

沒有任何UpdateModel重載沒有泛型類型簽名。你所看到的是編譯器有多聰明。當調用具有通用簽名的方法並且其中一個參數是相同的泛型類型時,編譯器將爲您推斷該類型。

換句話說,你發佈的這兩個例子在編譯器的眼中完全一樣。

+0

啊,這是有道理的。我想我錯過了,如果它出現在框架中的任何其他地方。謝謝 – 2009-01-31 10:57:44