C#を深く読んでいて章のパラが理解できなかった
もう 1 つのメソッド (今回は .NET 1.1 に既に存在していたもの) を調べる価値があるのは
Type.GetType(string)
、 とそれに関連するAssembly.GetType(string)
メソッドで、どちらも に動的に相当するものを提供しtypeof
ます。リスト 3.11 の出力の各行をGetType
、適切なアセンブリで呼び出されたメソッドに渡すことができると期待するかもしれませんが、残念ながら、実際はそれほど単純ではありません。閉じた構築型の場合は問題ありません。型引数は角かっこで囲むだけです。ただし、ジェネリック型定義の場合は、角かっこを完全に削除する必要があります。そうしないGetType
と、配列型を意味すると見なされます。リスト 3.12 は、これらすべてのメソッドの動作を示しています。
そして、コードの例では、作者は彼がしないように頼んだことをしたと私は信じています:
string listTypeName = "System.Collections.Generic.List`1";
Type defByName = Type.GetType(listTypeName);
Type closedByName = Type.GetType(listTypeName + "[System.String]"); // did here ? , since he passed the listTypeName + [Type args] , so compiler should think it's array?
Type closedByMethod = defByName.MakeGenericType(typeof(string));
または、私が間違っている可能性があります。「ジェネリック型定義については、角括弧を完全に削除する必要があります。それ以外の場合GetType
は、配列型を意味すると思います」