gpt4 book ai didi

c# - Nullable<> 作为 ViewPage 的 TModel

转载 作者:太空宇宙 更新时间:2023-11-03 22:27:05 25 4
gpt4 key购买 nike

不允许将 Nullable<> 类型作为 System.Web.Mvc.ViewPage 泛型的 TModel 参数传递的可能原因是什么?这有时会很方便。

在 ASP.NET MVC 源代码中定义了 TModel 应该是一个类:

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

但是 Nullable 类型是值类型。也许定义可以不那么严格......

最佳答案

此时此操作没有意义,因为 ViewPage 在内部始终验证模型是 T 的实例。由于此检查,您永远无法传递 null。

至于为什么一开始就不允许使用结构类型,原因有很多。其中:(a) 它可能会鼓励人们为模型使用自定义结构类型,这几乎从来都不是正确的做法; (b) 不能将结构类型作为参数传递给 Controller.UpdateModel(); (c) 模型应该具有引用相等性,以便过滤器可以检查和修改它们; (d) 内置结构类型,如 int 等,通常不能单独用作模型对象; (e) 结构类型不支持继承,例如将 int 模型传递给 ViewPage 会爆炸。

事实证明,(c) 可能不是问题,因为结构类型应该是不可变的,但其他项目要求在支持结构类型之前给予充分的考虑和设计决策。支持这些的后果比仅仅删除对 ViewPage 的约束要大得多。

关于c# - Nullable<> 作为 ViewPage 的 TModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1012229/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com