C# 程序集加载、类型创建和;缓存
我试图编写类似于C# 程序集加载、类型创建和;缓存,c#,reflection,.net-3.5,assembly-loading,C#,Reflection,.net 3.5,Assembly Loading,我试图编写类似于ObjectFactory的东西,给定程序集的路径和该程序集中某个类型的名称,它使用反射返回同一类型的实例。由于我需要对多个不同程序集中的类型重复执行此操作,所以每次我需要给定类型的新实例时,我是应该使用Assembly.LoadFrom,还是应该以某种方式缓存生成的Assembly对象和类型创建方法的委托?不需要,如果不是由设计决定。您可以在某个类型对象内保存对内存中程序集的引用。每次调用程序集。LoadFrom将是一种缓慢的方法 我建议,如果您想继续构建自己的工厂类,您可以为
ObjectFactory
的东西,给定程序集的路径和该程序集中某个类型的名称,它使用反射返回同一类型的实例。由于我需要对多个不同程序集中的类型重复执行此操作,所以每次我需要给定类型的新实例时,我是应该使用Assembly.LoadFrom
,还是应该以某种方式缓存生成的Assembly
对象和类型创建方法的委托?不需要,如果不是由设计决定。您可以在某个类型对象内保存对内存中程序集的引用。每次调用程序集。LoadFrom
将是一种缓慢的方法
我建议,如果您想继续构建自己的工厂类,您可以为正在激活的类缓存Type
实例
更好的是,我建议看一下依赖注入框架。如果您不熟悉依赖项注入(DI),请参阅
大多数框架至少会提供对象工厂、类型缓存,并自动解决构造函数依赖关系。这很好,因为您不必重新发明轮子,如果您愿意,您可以在所有应用程序中重用相同的方法
如果您有目的地经历构建对象工厂的过程,那么我建议您无论如何都要看看这些开源实现,因为它们是DI如何工作的好例子
- 统一应用程序块-
- 结构图-
- 卡斯尔温德索-
- Ninject-