Есть ли причина для этого звонка в 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) есть ли причина не использовать вместо него new()? Какая-то причина по умолчанию, без параметров конструктор, почему я не понимаю, может быть?

2 ответа

Решение

Это похоже на заброшенную попытку реализовать DI-контейнер для бедняков. Позже объект был просто передан, поэтому код может быть безопасно удален (если не задано значение по умолчанию). ReportSearchCriteria конструктор, который имеет некоторые потенциальные побочные эффекты).

Вы можете легко преобразовать код в следующее, полностью избегая побочных эффектов рефакторинга:

var ReportSearchCriteriaInstance = new MyCompany.Utils.ReportStructure.ReportSearchCriteria();
object ReportCriteriaInstance = ReportCriteria; 
Другие вопросы по тегам