程序集加载、类型创建和缓存



我试图写一些像ObjectFactory的东西,给定程序集的路径和该程序集中类型的名称,使用反射返回同一类型的实例。由于我需要在几个不同的程序集中重复对类型进行此操作,我是否应该在每次需要给定类型的新实例时使用Assembly.LoadFrom,或者我是否应该以某种方式缓存结果Assembly对象并委托给类型创建方法?

不,你不需要,如果不是通过设计决策。

可以在某个汇编类型对象中保存对内存中汇编的引用。

每次调用Assembly.LoadFrom将是一种缓慢的方式。

我建议如果你想构建自己的工厂类,你可以为你正在激活的类缓存Type实例。

更好的是,我建议你看看依赖注入框架。如果您不熟悉依赖注入(DI),请参阅http://en.wikipedia.org/wiki/Dependency_injection。

大多数框架至少会提供对象工厂、类型缓存和自动解析构造函数依赖。这很好,因为你不必重新发明轮子,如果你喜欢,你可以在你的所有应用程序中重用相同的方法。

如果你有意构建一个对象工厂,那么我建议你看看这些开源实现,因为它们是DI如何良好工作的很好的例子。

  • Unity Application Block - http://unity.codeplex.com/

  • StructureMap - http://structuremap.sourceforge.net/Default.htm

  • CastleWindsor - http://www.castleproject.org/container/index.html

  • Ninject - http://ninject.org/

相关内容

  • 没有找到相关文章