我在维护别人的代码,他们在一个方法中有这个部分:
object ReportCriteriaInstance =
Activator.CreateInstance(
typeof(MyCompany.Utils.ReportStructure.ReportSearchCriteria));
//ReportCriteria is passed in as a method parameter
ReportCriteriaInstance = ReportCriteria;
我不知道为什么他们在用CreateInstance()
实例化ReportCriteriaInstace
后将其设置为不同的值一行。
除此之外,因为我们传递一个已知的类型给CreateInstance
(MyCompany.Utils.ReportStructure.ReportSearchCriteria
),有任何理由不使用new()代替吗?一些默认的,无参数的构造函数导致我没有得到?
这看起来像是放弃了实现穷人的DI容器的努力。稍后,对象被传入,所以代码可以被安全地删除(除非有一个默认的ReportSearchCriteria
构造函数,它有一些潜在的副作用)。
您可以轻松地将代码转换为以下格式,从而完全避免重构的副作用:
var ReportSearchCriteriaInstance = new MyCompany.Utils.ReportStructure.ReportSearchCriteria();
object ReportCriteriaInstance = ReportCriteria;