2016-09-02 11 views
0

.Net 4.5 MVC 5アプリケーション。保護レベルのため、HttpContext.Current.Items.TryGetValueにアクセスできません。

HttpContext.Current.ItemsでTryGetValueを使用したいが、DictionaryExtensions.TryGetValueというエラーが発生している...保護レベルのためにアクセスできない。

私には何が欠けていますか?

+0

少し奇妙なので、ここにコードを投稿してください。ありがとうございました。 – Christos

+0

関連するコードが1行の場合: if(!HttpContext.Current.Items.TryGetValue(sKey、out value))... – mendel

答えて

1

HttpContext.Current.ItemsはIDictionaryを

TryGetValue辞書(上の方法である)です。

基本的なライブラリでは、誰かがその目的のためにIDictionaryで独自の拡張メソッドを作成したようですが、内部クラスでなければなりません。

正しいタイプの辞書としてキャストすればOKです。

+1

TryGetValueはIDictionaryのメソッドですhttps://msdn.microsoft.com/en-us/ライブラリ/ bb299639(v = vs.110).aspx – mendel

0

あなたは、任意の参照が欠落していないそのTryGetValueは唯一のHttpContextの

アイテムのコレクションはIDictionaryをHTTPRequestの単一の間で共有されるキーと値のコレクションをベースにタイプの辞書に利用できる方法であるだけであること。つまり、HttpContext.Current.ItemsはIDictionaryを返しています。この方法について知るには、IntelliSenseの既知のタイプはありません。

次のように使用できます。

HttpContext.Current.Items["ModuleInfo"] = "Custom Module Info” 

string contextData = (string)(HttpContext.Current.Items["ModuleInfo"]); 
+0

IDictionaryであるhttpcontextの 'Items'プロパティと、 'Object'でキャストする必要のある値が混乱しているようです。 – mendel

+0

ええ、ありがとう@mendal – bijayk

関連する問題