6

次のシグネチャを持つメソッドがあります。

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

ご想像のとおり、このメソッドは、指定されたテーブルの指定された行の指定された列にあるセルの値を文字列形式で返します。ほとんどすべてのWebページでこのメソッドが必要であることがわかりました。これが私の質問です:

  1. このメソッドをすべてのコードファイルに含める必要がありますか?
  2. Utilities_Classなどのクラスの静的メソッドとして使用する必要がありますか?
  3. Utilities_ClassなどのクラスのパブリックNON-STATICメソッドとして使用する必要がありますか?

最後の2つの選択肢はより良い考えのようです。しかし、最終的にどちらを選択するかはわかりません。

4

4 に答える 4

10

このための静的メソッドを作成することをお勧めします。具体的には、拡張メソッド

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

DataTableこれで、オブジェクトのインスタンスメソッドのように呼び出すことができます。

DataTable dataTable = ...;
var value = dataTable.GetTableCellValue("column", row);
于 2013-02-05T13:38:40.157 に答える
2

Utilities_Classなどのクラスのインスタンスは必要ないため、2番目のオプションを選択します。GetTableCellValueは、データメンバーとは関係がなく、静的にするためのメソッドは非常に合理的です。DataTableクラスに存在するのと同じように呼び出す拡張メソッドにします。

public static class DataExtensions
{
    public static string GetTableCellValue(this DataTable table, string columnName, int rowIndex)
    {
        // implementation
    }
}
于 2013-02-05T13:38:45.303 に答える
1

次のような拡張メソッドとして作成することもできます。

public static class DataExtensions
{
    public static string GetTableCellValue(this DataTable table, string columnName, int rowIndex)
    {
        // implementation
    }
}
于 2013-02-05T13:38:54.433 に答える
0

それらのどれも。

Pageから継承する独自のPage(BasePageと呼びましょう)を定義し、BasePageにメソッドを追加することをお勧めします。

あなたのすべてのページは、通常のページではなく、BasePageのインスタンスである必要があります。

編集:ダニエル・ヒルガースが指摘したように、拡張機能は私が提案したものよりも良い選択です。他の人がしてはいけないことを理解できるように、この投稿を保管してください:)

于 2013-02-05T13:40:21.053 に答える