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 genérico? Este poderia ser, por vezes úteis.

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 ...

Foi útil?

Solução

Não faria sentido para que isso funcione no momento, como a ViewPage internamente sempre verifica se o modelo é uma instância de T. Você nunca seria capaz de passar null por causa dessa verificação.

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 iria explodir.

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top