日期:2014-05-19  浏览次数:20373 次

*W*各位高手,请问一个关于反射的问题
请问在反射中
Type   t   =   Type.GetType( "名词空间.类名 ")

Type   t   =typeof(名词空间.类名)
有什么区别?

我用前者有时候能反射出来,有时候出不来.
后者可以出来.我想知道他们2个的区别

谢谢

------解决方案--------------------
不懂,=看LX正解
------解决方案--------------------
好象Type.GetType要在本程序集中
typeof都可以
------解决方案--------------------

------解决方案--------------------
用typeof必须引用包含这个类型的程序集,而用Type.GetType()则不需要,只要在执行路径下可以找到类型所在的程序集即可
------解决方案--------------------
前者是运行时通过方法得到的
后者则是编译时得到的
------解决方案--------------------
Type t = Type.GetType( "名词空间.类名 ")
是用字符串的形式,这样的好处在于可以拼接。或者你反射其它程序的时候,就只能够靠这样的方式了。

Type t =typeof(名词空间.类名)
是从一个类直接得到Type,只能够应用于当前程序集内。
typeof效率比GetType高
------解决方案--------------------
如果程序集没有加载,用Type.GetType就得不到type对象,它是运行时得到的
就像viena说的一样
------解决方案--------------------
学习,谢谢各位!
------解决方案--------------------
既然后者是编译时得到,那效率应该比前者低啊?

???????????


应该是编译时得到的 运行时效率高吧 他已经确定了类型 运行当然高了
------解决方案--------------------
If no assembly is specified, Type.GetType() will only look in the calling assembly and then mscorlib.dll for the type. For it to look in any other assembly, you need to give the Type.AssemblyQualifiedName for the type.