HttpContext.Current.Items.TryGetValue由于其保护级别而无法访问

本文关键字:访问 保护 Items Current TryGetValue 于其 HttpContext | 更新日期: 2023-09-27 18:05:29

.Net 4.5 MVC 5应用程序。

我想在HttpContext.Current.Items上使用TryGetValue,但我收到错误DictionaryExtensions.TryGetValue…由于其保护级别而无法访问。

我错过了什么?

HttpContext.Current.Items.TryGetValue由于其保护级别而无法访问

HttpContext.Current.Items是System.Collections.IDDictionary(https://msdn.microsoft.com/en-us/library/system.collections.idictionary(v=vs.110(.aspx(,它不同于System.Collections.Generic.IDictionary(https://msdn.microsoft.com/en-us/library/bb299639(v=vs.110(.aspx(

如果键不存在,则HttpContext.Current.Items[key]返回null,因此不需要TryGetValue方法。

HttpContext.Current.Items是一个IDictionary

TryGetValue是Dictionary((上的一个方法。

在底层库中,似乎有人为此目的在IDictionary上创建了自己的扩展方法,但它必须是一个内部类。

用正确的类型转换为Dictionary,应该没问题。

您没有丢失任何引用,只是TryGetValue是仅在Dictionary 类型上可用的方法

HttpContext的Items集合是基于IDictionary的键值集合,它在单个HTTPRequest中共享。即HttpContext.Current.Items正在返回IDictionary。对于intellisense来说,它没有任何已知的类型来了解这个方法;

您可能需要按以下方式使用它。

HttpContext.Current.Items["ModuleInfo"] = "Custom Module Info”
string contextData = (string)(HttpContext.Current.Items["ModuleInfo"]);