public List<IBusinessObject> RetrieveAllBusinessObjects()
{
var businessObjectType= typeof(IBusinessObject);
List<Type> implementationsOfBusinessObject = AppDomain.CurrentDomain.GetAssemblies()
.SelectMany(s => s.GetTypes())
.Where(businessObjectType.IsAssignableFrom).ToList();
return implementationsOfBusinessObject.Select(t =>(IBusinessObject)Activator.CreateInstance(t)).ToList();
}
堆栈溢出的用户建议我检查依赖注入作为上述代码段的解决方法。这样做有什么好处?
只是对场景的简要概述:
我们的数据库几乎没有存储过程,因此我们已经开始为更复杂的表实现 C# 业务对象。由于我们希望尽快切换数据库,这似乎是最好的选择。所有业务对象都必须在运行时使用反射加载以帮助管理它们。所有这些业务对象都实现了接口 IBusinessObject。
使用依赖注入的建议来自这个问题
编辑:
RetrieveAllBusinessObjects 方法位于接口后面的类中,因此可直接测试
如果有任何改变,我们会使用 AutoFac。我们不使用单独的配置文件。
-