我开始看到无处不在的环境。在ASP.NET MVC中,有ControllerContexts,RequestContexts,HttpContexts,FormContexts。在实体框架中,您有ObjectContexts和DbContexts。 Ninject有Ninject.Activation.IContext。
什么是上下文?
解决方法
那么它是一种依赖注入的东西,它允许人们说“这里是你将要操作的环境”。一般来说,它们毫无疑问地提供了“上下文”。即,一些状态。也许这个URL,也许是一些HTTP头,无论如何。
您看到很多,因为ASP.NET专注于测试,因此允许这些项目“交换”,以便您可以提供自己的上下文实现(即定义自己的状态),以便您可以运行测试适当和成功。
如果你想知道什么是状态,那就是环境中“给定”的各种数据。即今天在办公室里很冷。这是国家的一部分。但也许我想在办公室里运行我的测试,所以我将能够子类化OfficeContext并返回相应的方法/ etc的适当状态。