2012-02-17 29 views
2

我是新來的反射和打磚牆試圖瞭解類型。反射基礎知識

Assembly是什麼意思?Assembly.GetTypes()返回什麼?另外,如果您從GetTypes()命令中獲得的「類型」上調用類似GetGenericArguments()的東西,那麼該做什麼?

謝謝

+0

你應該開始閱讀有關'reflection' http://www.codeguru.com/csharp/csharp/cs_misc/reflection/article一些文檔。 PHP/c4257 – 2012-02-17 16:03:43

回答

2

Assembly.GetTypes()調用返回在組件中定義的所有類型和接口。

調用Type.GetGenericArguments()返回爲泛型指定的所有泛型參數。這可能不是最清晰的解釋,一個例子將有助於:

var type1 = typeof(Func<>); 
type1.GetGenericArguments(); // [ typeof(TResult) ] 

var type2 = typeof(Func<string>); 
type2.GetGenericArguments(); // [ typeof(String) ] 

var type3 = typeof(Tuple<string, int, bool>); 
type3.GetGenericArguments(); // [ typeof(String), typeof(Int32), typeof(Boolean) ] 
3

大會是在這種情況下的dll或exe文件。
Assembly.GetTypes()返回該程序集中的所有類型。

如果你有一個泛型類型

public class MyType<T, V> 
{ 
} 

Type.GetGenericArguments返回TV

1

在.NET的組件是由編譯類庫(和其他)項目類型

Assembly.GetTypes()返回該組件的所有類型的陣列產生的* .dll文件,也就是說所有的類&構件內的結構。

進一步閱讀