我正在维护别人的代码,他们在方法中有这个部分:
object ReportCriteriaInstance =
Activator.CreateInstance(
typeof(MyCompany.Utils.ReportStructure.ReportSearchCriteria));
//ReportCriteria is passed in as a method parameter
ReportCriteriaInstance = ReportCriteria;
我不知道他们为什么在用ReportCriteriaInstace
实例化CreateInstance()
后将CreateInstance
设置为不同的值。
除此之外,
因为我们将已知类型传递给MyCompany.Utils.ReportStructure.ReportSearchCriteria
({{1}})是否有任何理由不使用new()?一些默认的,无参数构造函数的原因我可能不会得到它?
答案 0 :(得分:2)
这似乎是为了实施穷人的DI容器而放弃的努力。稍后对象刚刚传入,因此可以安全地删除代码(除非有一个具有潜在副作用的默认ReportSearchCriteria
构造函数)。
答案 1 :(得分:1)
您可以轻松地将代码转换为以下内容,完全避免重构的副作用:
var ReportSearchCriteriaInstance = new MyCompany.Utils.ReportStructure.ReportSearchCriteria();
object ReportCriteriaInstance = ReportCriteria;