首页新闻招聘找找看知识库

C#关于gettype()获得方法的问题

0
悬赏园豆:40 [已解决问题]

例如有A,B,C这三个类,他们同时实现了接口ITest的SayHello()方法;
此时在主窗体中通过combox控件获得A,B,C其中一个类的名字,
现在想用typeof方法获得类
var t=  Type.GetType(cbx_CarTestType.SelectedItem.ToString());

那么如何让t显示出接口的实现方法呢。
即t.SayHello()的调用。

 

也就是说,我知道A,B,C三个类肯定有某一个方法,此时不想采用反射来获得这个方法再调用了,而是不管是哪个类,都调用该方法

鲁广广的主页 鲁广广 | 初学一级 | 园豆:87
提问于:2017-09-13 16:29
< >
分享
最佳答案
0

要调用方法只有两种办法:

1、就是采用反射获取方法,然后调用(显然不是你想要的)

2、创建一个实例来调用

var t=  Type.GetType(cbx_CarTestType.SelectedItem.ToString());

ITest test=(ITest)Activator.CreateInstance(t);

test.SayHello();

收获园豆:35
海之殇 | 菜鸟二级 |园豆:422 | 2017-09-13 16:49

通过接口实例化确实实现了公共方法的调用,非常感谢

鲁广广 | 园豆:87 (初学一级) | 2017-09-13 17:12
其他回答(4)
0

var 换成 dynamic

反射的方法直接写出来用(自动反射,没有智能提示)

收获园豆:5
hahanonym | 园豆:1322 (小虾三级) | 2017-09-13 16:32

 

写代码的时候没报错,编译的时候报错了,麻烦看下

鲁广广 | 园豆:87 (初学一级) | 2017-09-13 16:41

这个错误我解决了,可是在调试的时候,并没有识别出字符串对应的类

鲁广广 | 园豆:87 (初学一级) | 2017-09-13 17:11

@鲁广广: 没有实例化!

hahanonym | 园豆:1322 (小虾三级) | 2017-09-13 17:28

@hahanonym: 具体怎么操作呢,我该实例化哪个呢,目前看来楼下的实例接口的方法是可行的

鲁广广 | 园豆:87 (初学一级) | 2017-09-13 17:29
0

没看明白,你既然都实现了接口,你直接反射拿接口上的方法不就完了么?

Daniel Cai | 园豆:7488 (大侠五级) | 2017-09-13 16:32

我不是说了A,B,C三个类都实现了该接口,所以就不需要用反射再来寻找该方法了。我现在就是要直接让这个t识别这个公共接口方法

鲁广广 | 园豆:87 (初学一级) | 2017-09-13 16:42
0

s谁告诉你反射是这样用的..

你连实例都没有.哪来的接口实现给你调用?

吴瑞祥 | 园豆:23746 (高人七级) | 2017-09-13 16:49
0

海之殇正解

西漠以西 | 园豆:509 (小虾三级) | 2017-09-13 17:16
   您需要登录以后才能回答,未注册用户请先注册