有没有人知道在即将推出的.NET版本中是否有计划支持在环境执行上下文中存储对象?正如以下几页所强调的那样,确实需要它:
CallContext的限制:https://connect.microsoft.com/VisualStudio/feedback/details/276325/provide-better-context-support-to-async-operations
隐式与显式语境:http://msmvps.com/blogs/jon_skeet/archive/2010/11/08/the-importance-of-context-and-a-question-of-explicitness.aspx
可以添加到环境执行上下文的对象类型是:
- 不适合DI的那些。即应该由调用站点定义的外部依赖项,但是以一种使得它们作为方法参数传递不切实际的方式交叉切换应用程序域。示例:CancellationToken,IProgress,Transactions,SynchronizationContext,SecurityContext。 (事实上,ExecutionContext已被硬编码以传递后两者......为什么不能为自定义代码公开开放集合的任何理由?)
- 由发布到方法体中的通用代码使用的代码...代码,它不了解作为外壳方法的参数或其声明类型的属性可用的显式依赖项。考虑AOP世界中的PostSharp方面。
很高兴听到人们对这个人的看法:)
修改
此处也发布了问题:http://social.msdn.microsoft.com/Forums/en-US/async/thread/ea21ca57-5340-439c-8ee9-f0185b5787a1