4

コントローラーでいくつかのパラメーターを返すメソッドが必要です。これはその実装です。

    public List<Parameter> GetParameters(FormCollection collection) {

        List<Parameter> parameters = new List<Parameter>();
        List<string> parameterNames = new List<string>();

        //Get Parameters Names and Values

        return parameters;
    }

私はすべてのコントローラーでこのメソッドを使用するので、定義する必要がある 3 つのオプションについて考えます。

1-コントローラークラスの場合、そのコントローラーで次のように定義します。

public class ProductController : Controller {

   public List<Parameter> GetParameters(FormCollection collection) {

   //

    }
  }

2-静的クラスで静的メソッドとして定義します。

public static class GeneralMethods {

   public static List<Parameter> GetParameters(FormCollection collection) {

   //

    }
  }

3-それを None Static として定義します:

public class GeneralMethods {

   public List<Parameter> GetParameters(FormCollection collection) {

   //

    }
  }

どちらの方がよいですか?どれがより良いパフォーマンスを持っていますか?または、多くのコントローラーで使用されるメソッドを定義するためのその他のオプションはありますか? あなたの提案は何ですか?

4

1 に答える 1

5

3 つのいずれにおいても、パフォーマンスへの影響はありません。(最後のアプローチでは毎回個別のオブジェクトが作成されますが、GC によって適切に処理されます)。

アプローチ 1:いいえ、標準的な慣行として、コードを複製するべきではありません。

アプローチ 2:はい、メソッドが入力パラメーターのみに依存する場合。

アプローチ 3:はい、インスタンス変数を設定する必要があり、メソッドがそれらに依存している場合。

推奨されるアプローチ: (アプローチ 1+ アプローチ 3) このメソッドがすべてのコントローラー (またはほとんど) に共通している場合は、このメソッドを使用して基本コントローラーを宣言し、そこから他のすべてのコントローラーを継承します。

メソッドで宣言された変数はメソッドのスコープ内にあるため、静的メソッドは問題になりません。

于 2012-04-21T08:51:56.027 に答える