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-将其定义为无静态:

public class GeneralMethods {

   public List<Parameter> GetParameters(FormCollection collection) {

   //

    }
  }

哪一个更好?哪一个有更好的性能?或用于定义许多控制器中使用的方法的任何其他选项?你的建议是什么?

4

1 回答 1

5

这三个中的任何一个都不会对性能产生影响。(虽然最后一种方法每次都会创建单独的对象,但它会被 GC 优雅地处理)。

方法 1:不,作为标准做法,我们不应该重复代码。

方法2:是的,如果您的方法仅取决于输入参数。

方法3:是的,如果您需要设置一些实例变量并且您的方法取决于它们。

建议的方法:(方法 1+ 方法 3)如果此方法对您的所有控制器(或大多数)通用,请使用此方法声明一个基本控制器并从中继承所有其他控制器。

静态方法不会成为问题,因为在方法中声明的任何变量都在方法的范围内。

于 2012-04-21T08:51:56.027 回答