Есть ли причина для этого звонка в Activator.CreateInstance? - PullRequest
1 голос
/ 23 сентября 2011

Я поддерживаю чужой код, и у них есть этот раздел в методе:

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 ]

2 голосов
/ 23 сентября 2011

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

1 голос
/ 23 сентября 2011

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

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