void Test(Object obj)
{
Type t = obj.GetType();
//可以将obj转为他最上级的类型吗?
//假如obj 是 Page类型的
//就将 t转为 Page类型
//注意我不将Page写出来,也就是不要用 obj as Page 这种方式,不知道能不能实现
}
{
Type t = obj.GetType();
//可以将obj转为他最上级的类型吗?
//假如obj 是 Page类型的
//就将 t转为 Page类型
//注意我不将Page写出来,也就是不要用 obj as Page 这种方式,不知道能不能实现
}
呵呵。
类型是什么,对象是什么?
obj指向的对象已经固定了,要么你把obj这个引用指向另一个地方,要么,你就只能创建一个其他类型的引用,你无论如何修改,修改的只是这个obj指向对象的引用的类型,没有意义也没有必要。因为你类型不知道。动态创建的类型,方法和属性也必须动态调用。
{
}
t本来就是Page类型,不存在转的问题.
4.0之后,直接用dynamic
那么所有Page类的方法,属性都可以直接调用,也就是完全按Page类来使用.
问题简化点,我能不能根据 一个类型的字符串str(可以用GetType获取到Type) 来对 一个Object(这个对象的GetType().ToString()与str是一样的)进行转换。
类型Type是静态的概念,存在于你的程序代码中,而你运行的程序中只有对象,动态运行的对象没有转换的概念,静态Type类型才有转换的概念,转换的目的是为了写代码有提示,或者说是为了防止你代码乱写。
比如
Object a = new Test();
Type t = a.GetType();
这里我能不能 用 t 对 a进行转换,然后 直接 调用 Test 里的mm方法?
我这里不用 a as Test 这样的方法,想 用 t 对a进行操作
我想问的是技术性的能不能实现,先不管他以后能做什么。
dynamic 这个关键字的确能做到。
代码中能写 a.mm 却不能写 a as Test? 这不是矛盾么
代码中能写 a.mm 却不能写 a as Test? 这不是矛盾么
这句的意思是换一种方法来调用mm,而且我不一定知道这 就是 Test这个类。。
我这个Test是举例。
换句话来说,就是
dynamic 这个关键字 这样的效果 是怎样实现的?
dynamic形式上不过就是在编写代码的时候当这些类型都是弱类型,不提示错误而已。和类型转换没什么关系吧
你的问题,就是意味非要手写出来一个Page类型的变量,否则你就不承认.net可以反射。
我也知道 反射可以调用这个对象的属性与方法。
我认输啦,是不能这样做的。
谢谢大家都回答