1

我正在维护别人的代码,他们在一个方法中有这个部分:

object ReportCriteriaInstance =
        Activator.CreateInstance(
                typeof(MyCompany.Utils.ReportStructure.ReportSearchCriteria));

//ReportCriteria is passed in as a method parameter
ReportCriteriaInstance = ReportCriteria; 

我不知道为什么他们在ReportCriteriaInstaceCreateInstance().

除此之外,因为我们将已知类型传递给CreateInstance( MyCompany.Utils.ReportStructure.ReportSearchCriteria),是否有任何理由不使用 new() 代替?我没有得到一些默认的无参数构造函数的原因可能是什么?

4

2 回答 2

2

这似乎是放弃实现穷人的 DI 容器的努力。后来对象刚刚被传入,因此可以安全地删除代码(除非存在ReportSearchCriteria具有一些潜在副作用的默认构造函数)。

于 2011-09-22T23:19:43.750 回答
1

您可以轻松地将代码转换为以下代码,从而完全避免重构的副作用:

var ReportSearchCriteriaInstance = new MyCompany.Utils.ReportStructure.ReportSearchCriteria();
object ReportCriteriaInstance = ReportCriteria; 
于 2011-09-22T23:41:40.350 回答