为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
青春有我 2018-12-07 09:31:45
例如有A,B,C这三个类,他们同时实现了接口ITest的SayHello()方法;此时在主窗体中通过combox控件获得A,B,C其中一个类的名字,现在想用typeof方法获得类var t=  Type.GetType(cbx_CarTestType.SelectedItem.ToString());那么如何让t显示出接口的实现方法呢。即t.SayHello()的调用。   也就是说,我知道A,B,C三个类肯定有某一个方法,此时不想采用反射来获得这个方法再调用了,而是不管是哪个类,都调用该方法
查看完整描述

10 回答

?
叮当猫咪

TA贡献1776条经验 获得超12个赞

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

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

2、创建一个实例来调用

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

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

test.SayHello();

查看完整回答
反对 回复 2018-12-24
?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

var 换成 dynamic

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

查看完整回答
反对 回复 2018-12-24
?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

 

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

查看完整回答
反对 回复 2018-12-24
?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

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

查看完整回答
反对 回复 2018-12-24
?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

@鲁广广: 没有实例化!

查看完整回答
反对 回复 2018-12-24
?
PIPIONE

TA贡献1829条经验 获得超9个赞

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

查看完整回答
反对 回复 2018-12-24
?
子衿沉夜

TA贡献1828条经验 获得超3个赞

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

查看完整回答
反对 回复 2018-12-24
?
三国纷争

TA贡献1804条经验 获得超7个赞

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

查看完整回答
反对 回复 2018-12-24
?
12345678_0001

TA贡献1802条经验 获得超5个赞

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

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

查看完整回答
反对 回复 2018-12-24
?
慕妹3242003

TA贡献1824条经验 获得超6个赞

海之殇正解

查看完整回答
反对 回复 2018-12-24
  • 10 回答
  • 0 关注
  • 660 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信