C#,关于反射滴一个问题……

开发编程  |  电脑网络

C#,关于反射滴一个问题……
分享:
2014-10-23

2014-10-23最佳答案

楼上的代码有点小错误..type t = A.GetType();B = Activator.CreateInstance(t, null);此时的B是一个Object对象.你需要对其进行一个类型转换.才可以正确的使用一般来说如果已知A的类型为classA.代码中应该这么写type t = A.GetType();classA B = Activator.CreateInstance(t, null) as classA;但是你的问题中写的是一个未知类型...所以你也不可能知道classA的名字.所以这断代码你怎么办都不能使用.思考楼主的问题.应该是延后绑定之类的问题.像这样的情况一般都会开放一个接口.然后变量A会去继承这个接口.比如说IclassA.这样的话.不管变量A是哪个类型.我只要写如下的代码type t = A.GetType();IclassA B = Activator.CreateInstance(t, null) as IclassA;都可以调用IclassA里定义的方法了.

其它4条答案

| 可以这样,Type t = A.GetType(); B = Activator.CreateInstance(t, null);不过,你都不知道A的类型,写这段代码有什么意义呢,连类型都不知道,你怎么用呢?

2014-10-23

| 如果你用的.net 4.0 那么直接用dynamic生命变量B;如果不是.net 4.0,那就直接用object声明,然后强转成你需要的类型。不知道类型,就不知道该做什么、怎么做。

2014-10-23

| c#好像有个typeof方法的吧?这个可以返回对象所属的类型。

2014-10-23

未知类型变量ASystem.Type type =A.GetType();type B=null;好像是这么写!

2014-10-23