比如现在有接口 ITest,里面有方法 Log ,
类 A 实现ITest,
定义一个工厂,返回ITest类型的实例
现在用工厂反射 ( Assembly.LoadFrom.CreateInstance ) 得到A的实例 instance
现在想调用Log方法,查了一下 ,有两种1: type.GetMethod("Log").Invoke(instance)
2:   instance.Log  这两种有什么区别啊?

解决方案 »

  1.   

    1、通过反射来调用Log函数。反射的类不需要定义接口
    2、是通过CreateInstance再转成接口类型,可以直接调用Log函数。反射的类必须定义接口1的效率要比2低
      

  2.   

    因为你的类已经有接口了,因此建议用方法2来调用Log函数
    也容易维护和扩展
      

  3.   

    如果主程序知道接口,那么用instance.Log。
      

  4.   

    1是通过反射调用log方法
    2是A的实例直接调用log方法