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

DO_大龄码农 2014-07-01 02:28:48
c#中的反射获取实例后,返回结果都是object类型,使用还需要我们强制转换成相应的类型,有点不明白的是,反射得到object后,我们是不是可以通过处理直接返回字符串指定的类型,如直接返回HelloWorld类型,而不再是object对象指向我们的helloWorld实例,这样我们没法直接调用方法,必须(HelloWorld),如果要实现上述功能,那么是如何处理的那???
...全文
210 6 打赏 收藏 转发到动态 举报
写回复
用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
  • 打赏
  • 举报
回复
自己封装一层吧

110,571

社区成员

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

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

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