2013-02-05 6 views
6

を行う必要がありますは、私は次のシグネチャを持つメソッドを持っている多くのaspx.csファイル全体で使用されるメソッド静的

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

お察しのとおり、この方法は、に位置するセルの値を返します。指定された行の指定された列を文字列形式で指定します。私はこの方法がすべてのウェブページでほぼ必要であることが判明しました。

  1. 私はこの方法をすべてのコードファイルに入れるべきですか?
  2. Utilities_Classやのような、あるクラスの静的メソッドとしてもよいでしょうか?
  3. Utilities_Classのような、一部のクラスのパブリックな非定常メソッドとして使用する必要がありますか?

最後の2つの選択肢が良い考えです。しかし、私は最終的にどちらを選択するか分からない。

答えて

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

明示的に 'Extensions'クラスの名前空間をチェックし、それを使いたいときにインポートしてください。 (私は時々それを逃す:P) – Jalal

+0

@ジャラル:良い点。 –

2
私は文句を言わないクラスのインスタンスを必要とする私は2番目のオプションのために行くだろう

例:Utilities_Class。 GetTableCellValueは、静的にするためのデータメンバーやメソッドとはまったく関係がありません。 DataTableクラスに存在するように、extension methodを呼び出すようにします。これらの

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

また、拡張メソッドとしてのようなものを、それを作成することができます。

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

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

編集: Daniel Hilgarthが指摘したように、拡張機能は私が提案したものよりも優れた選択肢です。 他人が何をしないか理解できるようにこの投稿を保管してください:)

+3

*静的な*クラス – GolfWolf

+0

非常に真の@ w0lf、私はそれに応じて私の答えを拡大しました – levelnis

0

なし:

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

私はそれに対して助言します。これは、ページとは関係のないユーティリティメソッドです。したがって、それはそこに属しません。 –

+0

そのメソッドで独自のDataTable(既存のデータテーブルを拡張)を定義してみませんか? – Morv

+0

必要ありません。これが拡張メソッドの目的です。 –

関連する問題