Я активно разрабатываю настольные приложения, локальные и сетевые службы, некоторые классические ASP.NET и т. Д., Поэтому я привык к статической компиляции и статическому анализу кода. Теперь, когда я (наконец) изучаю ASP.NET MVC 3.0 , я вижу, что многие эксперты и опытные разработчики ASP.NET MVC рекомендуют использовать строго типизированные представления в ASP.NET MVC 3.0 ( где применимо).
Я предполагаю, что "строго типизированный" означает запись @model=...
в верхней части кода представления. Но при этом я получаю только IntelliSense , никакой статической проверки кода не происходит. Я могу написать все, что захочу, в операторе @model
в cshtml , и он скомпилируется и запустится. Следовательно, Model.Anything
также компилируется. Фактически, если я не печатаю @model, я могу динамически использовать любую модель, которая мне нужна, которая имеет "совместимые" свойства и методы.
Я привык к «строго типизированному» значению «не будет компилироваться», как LINQ для независимо от того, просто не будет компилироваться, если вы не получите правильные свойства. Есть ли какая-то другая цель для @model
, кроме IntelliSense и ошибки run-time , и почему она называется строго типизированной, если на самом деле это не так?
Строгая типизация, Значения в компьютерной литературе