日期:2014-05-17  浏览次数:20980 次

c# 反射问题
比如现在有接口 ITest,里面有方法 Log ,
类 A 实现ITest,
定义一个工厂,返回ITest类型的实例
现在用工厂反射 ( Assembly.LoadFrom.CreateInstance ) 得到A的实例 instance
现在想调用Log方法,查了一下 ,有两种

1: type.GetMethod("Log").Invoke(instance)
2:   instance.Log  

这两种有什么区别啊?

------解决方案--------------------
1、通过反射来调用Log函数。反射的类不需要定义接口
2、是通过CreateInstance再转成接口类型,可以直接调用Log函数。反射的类必须定义接口

1的效率要比2低


------解决方案--------------------
1是你不确定有没有这个方法,就可以调用,
2是这个实例必须已经定义了这个方法你才能调用。