这次调用Activator.CreateInstance的原因是什么?

时间:2011-09-22 23:11:26

标签: .net reflection activator createinstance

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

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()?一些默认的,无参数构造函数的原因我可能不会得到它?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

var ReportSearchCriteriaInstance = new MyCompany.Utils.ReportStructure.ReportSearchCriteria();
object ReportCriteriaInstance = ReportCriteria;