Nullable <> como TModel para ViewPage
-
06-07-2019 - |
Pergunta
Quais são as possíveis razões que Nullable <> tipos não são permitidos a ser passado como TModel parâmetro de System.Web.Mvc.ViewPage
fonte Em ASP.NET MVC definido o que TModel deve ser uma classe:
public class ViewPage<TModel> : ViewPage where TModel : class
mas os tipos anuláveis ??são tipos de valor. Talvez definição poderia ser menos restritiva ...
Solução
Não faria sentido para que isso funcione no momento, como a ViewPage
Quanto ao porquê de tipos de estrutura não foram autorizados, em primeiro lugar, havia uma infinidade de razões. Entre eles: (a) que pode incentivar as pessoas a usar tipos de estrutura personalizada para um modelo, que quase nunca é a coisa correta a fazer; (B) você não pode passar um tipo de estrutura como um parâmetro para Controller.UpdateModel (); (C) os modelos devem ter igualdade de referência, a fim de que os filtros podem inspecionar e modificá-los; (D) o embutido tipos de estrutura como int, etc, normalmente não são úteis por si só como o seu objecto modelo; e (e) tipos de estrutura não suportam herança, v.g. passando um modelo int em um ViewPage
Acontece que (c) provavelmente não é um problema porque tipos de estrutura deve ser imutável, mas os outros itens requerem que permitir que os tipos de estrutura ser dada ampla reflexão e decisão de projeto antes de apoiá-los. As consequências de apoiar estes são muito maiores do que apenas a remoção da restrição na ViewPage
Outras dicas
Um único valor não é realmente um "modelo" - você pode simplesmente usar o dicionário e elenco