【发布时间】:2012-08-27 18:02:30
【问题描述】:
在我看来,Context 类是一个控制台,其对象可以调用任何包含的函数,例如 WCF Ria 服务中的 Datacontext 和 DomainContext。我是否正确理解了这个概念?如果是这样,在什么情况下我需要在自己的类层次结构中创建上下文类?
.net 框架除了 DataContext 之外,还有哪些知名的 Context 类?
【问题讨论】:
标签: c#
在我看来,Context 类是一个控制台,其对象可以调用任何包含的函数,例如 WCF Ria 服务中的 Datacontext 和 DomainContext。我是否正确理解了这个概念?如果是这样,在什么情况下我需要在自己的类层次结构中创建上下文类?
.net 框架除了 DataContext 之外,还有哪些知名的 Context 类?
【问题讨论】:
标签: c#
对我来说,上下文对象定义了一组绑定到当前执行路径的值和/或函数。换句话说,就像在工作面试的上下文中谈论技术主题与在书呆子晚宴上谈论同一主题不同一样,上下文会根据影响运行时环境的因素而变化消费代码。这似乎很抽象,但我现在想不出更好的方式来描述它!
.NET 中另一个著名的上下文是HttpContext 对象。哪些值会根据正在处理的 Http 操作而改变。例如,网址将更改为HttpContext.Current.Request.Uri。希望能为您提供上下文:)
【讨论】:
【讨论】:
您可以将上下文视为相关“事物”的包装器,例如 HttpContext、DbContext、ObjectContext。即: HttpContext 包含您可以访问的与 HTTP 相关的操作的任何信息。
DbContext 包含用于数据库通信的方法和属性。 ObjectContext 也是如此。
我会说它是一个占位符或相关事物的容器。
【讨论】:
在一些 OOP 设计模式中使用了 Context 类, 例如: - 状态模式 - 策略模式
【讨论】:
According to Microsoft Official Explanation :
上下文是一个有序的属性序列,它为驻留在其中的对象定义了一个环境。在激活过程中为配置为需要某些自动服务(例如同步、事务、即时激活、安全性等)的对象创建上下文。多个对象可以存在于一个上下文中。
一个新对象的上下文通常是根据类的元数据属性来选择的。一些重要的上下文类型是:
ExecutionContext:
这是父上下文,所有其他上下文都是它的一部分。这是系统 Task 等 .NET 功能用于捕获和传播上下文,但没有 自己的行为。
SecurityContext:
在这里我们可以找到通常会受到限制的任何安全信息 到当前线程。如果您的代码需要以特定用户身份运行,您可能是 模拟该用户,或者 ASP.NET 可能正在为您进行模拟。在那里面 在这种情况下,模拟存储在 SecurityContext 中
CallContext:
这允许程序员存储应该可用于 逻辑线程的生命周期。虽然在很多情况下被认为是不好的做法, 在传递各种上下文时,它可以避免过多的方法参数 围绕节目。 LogicalCallContext 是一个相关的系统,可以跨 应用程序域。
【讨论】: