我正在尝试编写类似于ObjectFactory
的东西,给定程序集的路径和该程序集中的类型名称,使用Reflection返回相同类型的实例。因为我需要对几个不同程序集中的类型重复执行此操作,所以每次我需要一个给定类型的新实例时,我应该使用Assembly.LoadFrom
,还是应该以某种方式缓存生成的Assembly
对象和委托给类型创建方法?
答案 0 :(得分:3)
如果没有设计决定,你不需要。您可以在某个Assembly类型对象中保存对内存中程序集的引用。
答案 1 :(得分:0)
每次调用Assembly.LoadFrom
都是一种缓慢的方法。
我建议如果你想要建立你自己的工厂类的路径,那么你要为你正在激活的类缓存Type
实例。
更好的是,我建议查看依赖注入框架。如果您不熟悉依赖注入(DI),请参阅http://en.wikipedia.org/wiki/Dependency_injection。
大多数框架至少会提供对象工厂,类型缓存并自动解析构造函数依赖项。这很好,因为您不必重新发明轮子,如果您愿意,可以在所有应用程序中重复使用相同的方法。
如果您故意经历构建对象工厂的过程,那么我建议您先看看这些开源实现,因为它们是DI工作良好的很好的例子。
Unity应用程序阻止 - http://unity.codeplex.com/
StructureMap - http://structuremap.sourceforge.net/Default.htm
CastleWindsor - http://www.castleproject.org/container/index.html
Ninject - http://ninject.org/