2011-10-25 10 views
4

私は最近、ASP.NETエラースタックトレースに次の行を気づいMicrosoftによって作成されたクラスの `1または` 2サフィックスは何を意味しますか?

System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) +264 

IDictionary`2`2は何を意味するのでしょうか?

また、私はそれが一般的なパラメータを示すためだcodeplex repository of ASP.NET MVC

+0

半重複http://stackoverflow.com/questions/1369294/why-are-the-names-of-generic-types-mangled-in-a-net- stack-trace/1369303#1369303異なる質問ですが同じ回答 – xanatos

答えて

4

にそのように名付けられ、他のクラス/ファイルを見つけました。たとえば、この反射コードを見てみましょう:これが有効である.NETで

var type = typeof(Dictionary<string, string>).GetInterface("IDictionary`2"); 
+0

特に、ジェネリック型のパラメータの* number *が表示されます。 –

2

:汎用パラメータ「変化」の

class X<T> 
{ 
} 

class X<T, U> 
{ 
} 

クラスの名前を。だから、あなたが見る数は、(単純な言葉を使用する。:クラス/インタフェース/構造体は、一般的なパラメータの数に「オーバーロードされた」ことができるので、あなたはIEnumerableIEnumerable<T>を持つことができます)パラメータの数である

これらのクラスは次のようになりますX`1X`2と呼ばれ、あなたは一般的なパラメータの名前は、クラスの名前を「変更」しないこと

typeof(X<>).Name == "X`1"; 
typeof(X<,>).Name == "X`2"; 

注意を持っているでしょう。前の二つの定義した後、このいずれかが無効になります:

class X<U> 
{ 
} 
1

公式機能の説明は次のとおりです。

public override object Execute(ControllerContext controllerContext, IDictionary<string, object> parameters) 

あなたはタイプがIDictioray<,> Thの「2は、ジェネリックのテキスト記述である見ることができるように2つのタイプを取る。例えばリスト1はリストです<>

関連する問題