2016-11-02 4 views
0

非ジェネリッククラス上の一般的なカッコでのみ構成されていC#のリフレクションType.Nameは、私が通過反映していますアセンブリ内のクラスを持っている

変数 holdに格納されて何
foreach(var type in typeof(Example).Assembly.GetTypes()) 
    var hold = type.Name; 

は、<>ちょうど一般的なブラケットで、type.FullNameはExample+<>です。何が起こっている?これは、アセンブリ内の他のすべてのクラスで機能します。このクラスには2つの部分的なファイルがありますが、どちらも汎用的ではありません。

+0

http://stackoverflow.com/q/6418779/34397 – SLaks

+0

タイプの '.Name'では、アングル' <> 'はジェネリックタイプとは関係ありません。ジェネリック型は '.ToString()'を使うと '' SomeClass'3 [TOne、TTwo、TThree] ''と似ていますが、 '' SomeClass'3 "' '' '。 –

+0

SLaks、ありがとう、私は最初の検索でその質問を見つけることができませんでした。なぜなら私はコンパイラ生成クラスを探していることを知らなかったからです。 – Dagrooms

答えて

4

これらのタイプは、コードを動作させるためにコンパイラによって生成されます。

これらは、ラムダ、イテレータ、または匿名の型に由来します。

+0

アセンブリのリフレクションを行うときにこの型を取得しないように、型にCompilerGeneratedAttributeがあるかどうかを確認しました。あなたの助けをありがとう – Dagrooms

+0

これらのC#コンパイラ生成型の名前については、[別のスレッドでのこの回答](http://stackoverflow.com/a/2509524/1336654)を参照してください。もちろん、これが将来変更されるという保証はありません。 –

関連する問題