質問を解決する際に
ASP.Netプロファイルの読み込み中にエラーが発生しました
わからないType.GetType(string typeName)の振る舞いに出くわしました。
のタイプを取得するときは、タイプを次のList<int>
ように指定するだけで十分です。
System.Collections.Generic.List`1 [[System.Int32]]
ただし、の場合HashSet<int>
、次のように完全修飾型名を指定する必要があります
System.Collections.Generic.HashSet`1 [[System.Int32]]、System.Core、Version = 4.0.0.0、Culture = neutral、PublicKeyToken = b77a5c561934e089
アセンブリ、バージョン、カルチャ、または公開鍵トークンのいずれかを省略した場合、タイプは解決されません。
再現するコード
// Returns expected type:
Type tListWorks =
Type.GetType("System.Collections.Generic.List`1[[System.Int32]]");
// Returns null:
Type tHashSetNull =
Type.GetType("System.Collections.Generic.HashSet`1[[System.Int32]]");
// Returns expected type:
Type tHashSetWorks =
Type.GetType("System.Collections.Generic.HashSet`1[[System.Int32]], System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089");
// Returns null (omitted Culture):
Type tHashSetNoCultureFails =
Type.GetType("System.Collections.Generic.HashSet`1[[System.Int32]], System.Core, Version=4.0.0.0, PublicKeyToken=b77a5c561934e089");
質問
- なぜ私は完全に資格を得る必要があります
HashSet<T>
が、そうではありませんList<T>
か? - バージョン条件を指定する必要がある場合、.NETランタイムが3.5(最初にあった
HashSet<T>
)またはそれ以降の.NET 4.5などの場合はどうなりますか?ランタイムがSilverlightやMonoのようなものである場合はどうなりますか?