Question

Quelles sont les raisons possibles pour lesquelles Nullable < > les types ne sont pas autorisés à être passés en tant que paramètre TModel de System.Web.Mvc.ViewPage < TModel > générique? Cela peut être utile parfois.

Dans ASP.NET, le code source MVC définissait ce que TModel devait être une classe:

public class ViewPage<TModel> : ViewPage where TModel : class

mais les types nullables sont des types valeur. Peut-être que la définition pourrait être moins restrictive ...

Était-ce utile?

La solution

Cela n'aurait aucun sens de fonctionner pour le moment, car ViewPage < T > en interne, vérifie toujours que le modèle est une instance de T. Vous ne pourrez jamais transmettre la valeur null à cause de cette vérification.

Quant aux raisons pour lesquelles les types de structure n'étaient pas autorisés, il y avait une multitude de raisons. Parmi eux: (a) cela peut encourager les utilisateurs à utiliser des types de structure personnalisés pour un modèle, ce qui n’est presque jamais la bonne chose à faire; (b) vous ne pouvez pas transmettre un type de structure en tant que paramètre à Controller.UpdateModel (); (c) les modèles devraient avoir une égalité de référence afin que les filtres puissent les inspecter et les modifier; (d) les types de structure intégrés tels que int, etc., ne sont normalement pas utiles en tant qu'objet de modèle; et (e) les types de structure ne prennent pas en charge l'héritage, par exemple. passage d'un modèle int dans une ViewPage < long > exploserait.

Il s’avère que c) n’est probablement pas un problème, car les types de structure doivent être immuables, mais les autres éléments exigent que les types de structure soient suffisamment réfléchis et pris en compte avant de les prendre en charge. Leur prise en charge va bien au-delà d'une simple suppression de la contrainte sur ViewPage < T >.

.

Autres conseils

Une valeur unique n'est pas vraiment un "modèle". - vous pouvez simplement utiliser le dictionnaire et le casting?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top