c#中的反射??????????

DO_大龄码农 2014-07-01 02:28:48
c#中的反射获取实例后,返回结果都是object类型,使用还需要我们强制转换成相应的类型,有点不明白的是,反射得到object后,我们是不是可以通过处理直接返回字符串指定的类型,如直接返回HelloWorld类型,而不再是object对象指向我们的helloWorld实例,这样我们没法直接调用方法,必须(HelloWorld),如果要实现上述功能,那么是如何处理的那???
...全文
220 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
moonwrite 2014-07-03
  • 打赏
  • 举报
回复
引用 3 楼 zhengnan2012 的回复:
C#是强类型语言,中间你还是要用一次强转才能像你指定类的对象这样使用,因为你不知道最终要转化成什么类型. 比如你用 Get<T>(Object obj) 返回你的类型但是你还是得传一个T进去啊.
+1 自己来一个泛型方法~
缪军 2014-07-03
  • 打赏
  • 举报
回复
楼主的意思如果是不需要依赖HelloWorld类型,而直接调用其方法,那么有三种方案供参考: 1.使用接口:比如IHellowWorld,这样你只依赖接口类型,但是仍然存在依赖; 2.使用reflaction的核心类type提供的反射功能,通过方法名称调用,猜想这可能是你想要的效果, (但是从设计角度说,这样仍然存在依赖),代码大致是这样:
Type t = 加载的object.GetType();
MethodInfo method= t.GetMethod("方法名称", new Type[] { typeof(参数1的类型), ...,参数N});
Object result =  method.Invoke(new Object[] { 参数1,...,参数N });
3.也是完全不依赖于对象类型和任何细节的方案: 调用层实现基于消息(事件)的通信接口,通过构造函数注入给被调用对象, 你需要服务的时候,就触发事件,对方自动执行功能,
threenewbee 2014-07-02
  • 打赏
  • 举报
回复
你要是知道类型,还要反射干什么。 不过你可以用接口或者基类类型来接收。
zhengnan2012 2014-07-02
  • 打赏
  • 举报
回复
C#是强类型语言,中间你还是要用一次强转才能像你指定类的对象这样使用,因为你不知道最终要转化成什么类型. 比如你用 Get<T>(Object obj) 返回你的类型但是你还是得传一个T进去啊.
DO_大龄码农 2014-07-02
  • 打赏
  • 举报
回复
关键就是如何封装?
bdmh 2014-07-01
  • 打赏
  • 举报
回复
自己封装一层吧
先自己复习一下,看看下面的C#问题都能回答上来么? 1.静态变量和非静态变量的区别? 2.const 和 static readonly 区别? 3.extern 是什么意思? 4.abstract 是什么意思? 5.internal 修饰符起什么作用? 6.sealed 修饰符是干什么的? 7.override 和 overload 的区别? 8.什么是索引指示器? 9.new 修饰符是起什么作用? 10.this 关键字的含义? 11.可以使用抽象函数重写基类的虚函数吗? 12.密封类可以有虚函数吗? 13.如果基类的虚属性只有一个属性访问器,那么继承类重写该属性后可以有几个属性访问器?如果基类有 get 和 set 两个呢? 14.abstract 可以和 virtual 一起使用吗?可以和 override 一起使用吗? 15.接口可以包含哪些成员? 16.类和结构的区别? 17.接口的多继承会带来哪些问题? 18.抽象类和接口的区别? 19.别名指示符是什么? 20.如何释放非托管资源? 21.P/Invoke是什么? 22.StringBuilder 和 String 的区别? 23.explicit 和 implicit 的含义? 24.params 有什么用? 25.什么是反射? 以下是我做的一份参考答案(C# 语言范畴之内),如果有不准确、不全面的,欢迎各位朋友指正! 1.静态变量和非静态变量的区别?答:静态变量:静态变量使用 static 修饰符进行声明在所属类被装载时创建通过类进行访问所属类的所有实例的同一静态变量都是同一个值非静态变量:不带有 static 修饰符声明的变量称做非静态变量在类被实例化时创建通过对象进行访问同一个类的不同实例的同一非静态变量可以是不同的值示例:

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧