C#中的反射问题

来源:百度知道 编辑:UC知道 时间:2024/06/27 09:55:04
反射可以动态的返回一个类型。那再返回这个类型之前,你知不知道
这个类型的名字呢。如果不知道名字又怎么加载呢?
如果知道的话还用动态加载吗?直接using一下,用就是了。
还有返回类型后,还要返回此类型的属性,方法,构造方法等。这是为什么呢?你要返回这个类型,跟定是要用这个类型,既然要用,那再返回之前跟定知道他有什么功能,那返回类型后直接用就是了。还要返回方法干什么呢?
摆脱高手给详细解释一下。对于这个反射问题,我已经快要疯了,
这么长时间了,还不知道反射到底是干什么用》
二楼的高手,请问你,我既然不知道类型的名字.
那我想利用反射进行动态加载又怎么加载呢?
我看了很多反射的动态加载,必须要知道类型的名字才能加载啊(或许这是错的).
麻烦您再详细说明一下谢谢啊.

我先定义了一个接口,比如说一个播放器的编码。现在有几百种的视频文件,我只能播放其中的几十种。这每一种对象类型都必须继承我的接口。现在,我所知道的只是这个接口的名字,能看到的只是我现在定义的这几十中类型,当我要对其每一种进行操作时,也可用一个switch语句将其一个一个判断,并经行实例化,最后成功操作。显然这里用反射的话,已经显现出优势了,就是通过一个类型名,就可以轻松的创建实例。另外,现在有人发现有一种视频文件更适合他的需要,于是,他写了一个类型,使其继承我的接口,并将这个类型反应成一个视频文件。试问,你这时,根本无法知道这个类型的名字,怎么using?另外,你可能又提供了一些视口的操作的接口,容许他的视频文件包含一些操作,如一些文件不允许快进,一些又允许;有的播放器却什么文件都能快进。这些是在类里又加了一些用来操作的方法,那么试问,你连这个类型的名字和方法的名字都不知道,怎么using,甚至你都无法知道程序是怎么运行的,因为你只能让程序自己去找到这些。

System.Reflection.Assembly aa = Assembly.LoadFile("");
object cc = aa.CreateInstance("");
的确需要类名,但你可以让程序自己去找类名,比如根据当前的对象的某个接口实现的属性或方法得到类名,并根据类名创建对象,或反射出其方法(这里可以让接口包括一个得到方法列表的属性,即返回值是一个字符串数组。),这就可以了。

所以要用反射来看程序集中的类型和其中的属性和方法

简单讲,反射机制是给程序学习程序的。

定义接口啊,