反思基础知识

时间:2012-02-17 15:58:20

标签: c# reflection

我不熟悉反思,正在试图了解类型。

大会的意思究竟是什么以及Assembly.GetTypes()返回什么?此外,如果您从GetGenericArguments()命令获得类似'{1}}的内容,那该怎么做呢?

由于

4 个答案:

答案 0 :(得分:3)

在这种情况下,汇编是一个dll或exe文件 Assembly.GetTypes()返回该程序集中的所有类型。

如果您有通用类型

public class MyType<T, V>
{
}

Type.GetGenericArguments返回TV

答案 1 :(得分: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) ]

答案 2 :(得分:1)

程序集包含运行的代码,或存储有关对象的信息,即具有方法/属性/事件的类/结构。

类型是描述其他类的类。

http://msdn.microsoft.com/en-us/library/system.type%28v=vs.71%29.aspx

答案 3 :(得分:1)

.NET中的程序集是* .dll文件,它是通过编译类库(和其他)项目类型生成的

Assembly.GetTypes()返回该程序集中所有类型的数组,也就是说所有类和&amp;在装配体内构造。

进一步阅读