locked
如何避免使用 反射 来提高性能 RRS feed

  • 问题

  • 鄙人(新手)在维护一个项目,发现代码中有很多地方是通过 反射调用 如:
    string fileName = System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase.
                        Substring(0, System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase.LastIndexOf(@"\")) + "\\Sync.exe";               //调用的程序路径名称
                    Assembly tmpAss = Assembly.LoadFrom(fileName);
                    Type dataSyncType = tmpAss.GetType("Sync.Loader");
                    dataSyncObj = tmpAss.CreateInstance("Sync.Loader");
                    ((System.Windows.Forms.Form)dataSyncObj).Show();
                    MethodInfo methodInfo = dataSyncType.GetMethod("AddProgressControl");
                    Object methodResult = methodInfo.Invoke(dataSyncObj, new object[] { isShowProgress });
    当调用的频率高了,就影响到了程序的性能.
    还请教各位多多指点,看有什么好的方法来避免这样调用。以提高性能。
    2009年12月2日 9:38

答案

  • 能直接调用就直接调用,反射影响性能。没有什么好的办法,直接调用,不要通过反射。
    Please remember to mark the replies as answers if they help and unmark them if they provide no help
    2009年12月7日 9:19
    版主

全部回复

  • 能直接调用就直接调用,反射影响性能。没有什么好的办法,直接调用,不要通过反射。
    Please remember to mark the replies as answers if they help and unmark them if they provide no help
    2009年12月7日 9:19
    版主
  • 做好设计.
    有时候必须使用反射,比如环形依赖,比如比较自由的抽象工厂.
    如果说项目里面有相当多的反射,很可能是因为里面有环形依赖,本身的设计有问题.
    2009年12月24日 7:30