gpt4 book ai didi

asp.net-mvc-3 - 与新 MVC 3 ViewBag 的代码契约

转载 作者:行者123 更新时间:2023-12-02 20:29:58 25 4
gpt4 key购买 nike

    public class HomeController : Controller
{
public ActionResult Index()
{
// Warning 19 CodeContracts: Possibly calling a method on a null reference 'Website.Controllers.HomeController.<Index>o__SiteContainer0.<>p__Site2.Target' HomeController.cs

if (ViewBag != null)
{
ViewBag.Message = "Be Immortal";
}

return View();
}

public ActionResult About()
{
return View();
}
}

绞尽脑汁试图找出如何满足 MVC 3 中 ViewBag 的 [X] 隐式非空义务。有没有人想出一种方法,使代码契约与新的动态 ViewBag 类型一起工作?

我希望能够将 ViewBag 包装在基本 Controller 中,如 ViewBagSafe 等。

我确实意识到这并不是项目的真正问题,因为 ViewBag 永远不会为空,但我想保留代码契约(Contract)并默认进行空检查,以防止我将来出现失误(并且仍然能够编译时不发出警告,以便我可以轻松识别我自己的违反契约(Contract)的代码)。

最佳答案

我找到了问题所在。它与动态成员查找的初始化逻辑和 C# 编译器发出的静态缓存字段有关。我必须向 cccheck 教授这些知识,并向 System.Core.dll 中的缓存类添加一些约定。下一个版本不应再对动态访问成员发出这些警告。感谢您提出来。

关于asp.net-mvc-3 - 与新 MVC 3 ViewBag 的代码契约,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6572128/

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