调用Activator.CreateInstance的任何原因



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

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; 

相关内容

  • 没有找到相关文章

最新更新