1

私は他の誰かのコードを維持していて、彼らはメソッドにこのセクションを持っています:

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

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

ReportCriteriaInstaceでインスタンス化した後、1行で異なる値に設定されている理由がわかりませんCreateInstance()

それとは別に、既知の型をCreateInstanceMyCompany.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 に答える