我正在尝试编写类似的东西ObjectFactory
,给定程序集的路径和该程序集中的类型名称,使用反射返回相同类型的实例。由于我需要对几个不同程序集中的类型重复执行此操作,我应该在Assembly.LoadFrom
每次需要给定类型的新实例时使用,还是应该以某种方式缓存结果Assembly
对象和类型创建方法的委托?
问问题
658 次
2 回答
3
不,你不需要,如果不是设计决定的话。您可以在某个Assembly类型对象中保存对内存中程序集的引用。
于 2011-10-04T08:34:24.020 回答
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
忍者 - http://ninject.org/
于 2011-10-04T09:00:56.843 回答