我应该创建一个静态方法,它将用于许多aspx.cs文件

时间:2013-02-05 13:35:37

标签: c# asp.net

我有一个带有以下签名的方法:

string GetTableCellValue(DataTable table, string columnName, int rowIndex){}

正如您可能猜到的,此方法以字符串格式返回位于指定表的指定行的指定列的单元格的值。事实证明,我几乎在所有网页中都需要这种方法。这是我的疑问:

  1. 我应该将此方法放在所有代码文件中吗?
  2. 我应该将它作为某些类的静态方法,例如Utilities_Class或?
  3. 我应该将它作为某些类的公共NON-STATIC方法,如Utilities_Class?
  4. 最后两个选择似乎更好。但我不知道最终会选择哪一个。

4 个答案:

答案 0 :(得分:10)

您可能想为此创建一个静态方法。具体来说,extension method

public static class Extensions
{
    public static string GetTableCellValue(this DataTable table,
                                           string columnName, int rowIndex)
    {
        // ...
    }
}

现在,您可以将其称为DataTable对象上的实例方法:

DataTable dataTable = ...;
var value = dataTable.GetTableCellValue("column", row);

答案 1 :(得分:2)

我会选择第二个选项,因为我不需要类的实例,例如Utilities_Class。 GetTableCellValue与其数据成员或使其静态的方法无关是非常合理的。让它extension method来调用它就像它存在于DataTable类中一样。

public static class DataExtensions
{
    public static string GetTableCellValue(this DataTable table, string columnName, int rowIndex)
    {
        // implementation
    }
}

答案 2 :(得分:1)

您也可以将其创建为扩展方法,例如:

public static class DataExtensions
{
    public static string GetTableCellValue(this DataTable table, string columnName, int rowIndex)
    {
        // implementation
    }
}

答案 3 :(得分:0)

没有。

我建议你定义你自己的页面(让我们称之为BasePage)继承自Page并在BasePage中添加方法。

您的每一页都应该是BasePage的实例而不是常规的页面。

修改: 正如Daniel Hilgarth指出的那样,扩展是比我提出的更好的选择。 请保留这篇文章,以便其他人了解不该做的事情:)