2017-12-06 3 views
1

私は.NETテーブルアダプタとデータテーブルを扱っていましたが、このコードをモジュール化する方法にかかわってきましたが、私はそれを "見る"ことができません。 ここにあるのですが、両方のケースを処理する1つのライナーに結合する方法が必要です。このC#コードをどのようにモジュール化できますか?

class What_I_have 
    { 
    public void TableAdapterFiller(TSNKF30_STRUCT_ELMNTTableAdapter TableAdapter, 
     dsGrids.TSNKF30_STRUCT_ELMNTDataTable DataTable) 
    { 
     try 
     { 
     TableAdapter.Fill(DataTable); 
     } 
     catch (SystemException sex) 
     { 
     GenericExcHandler(sex, DataTable.TableName); 
     } 
    } 
    public void TableAdapterFiller(TSNKF52_CGFM_USERSTableAdapter TableAdapter, 
     dsGrids.TSNKF52_CGFM_USERSDataTable DataTable) 
    { 
     try 
     { 
     TableAdapter.Fill(DataTable); 
     } 
     catch (SystemException sex) 
     { 
     GenericExcHandler(sex, DataTable.TableName); 
     } 
    } 

    } 

これは私がやろうとしているかのアイデアである(タイプ 'HowToTypeThis' 私の苦境を提示):

class What_Id_like 
    { 
    public void TableAdapterFiller(TSNKF30_STRUCT_ELMNTTableAdapter TableAdapter, 
     dsGrids.TSNKF30_STRUCT_ELMNTDataTable DataTable) 
    { 
     IsolatedMethod(TableAdapter, DataTable); 
    } 
    public void TableAdapterFiller(TSNKF52_CGFM_USERSTableAdapter TableAdapter, 
     dsGrids.TSNKF52_CGFM_USERSDataTable DataTable) 
    { 
     IsolatedMethod(TableAdapter, DataTable); 
    } 

    void IsolatedMethod(HowToTypeThis tabAdapter, 
     HowToTypeThis DataTable) 
    { 
     try 
     { 
     TableAdapter.Fill(DataTable); 
     } 
     catch (SystemException sex) 
     { 
     GenericExcHandler(sex, DataTable.TableName); 
     } 
    } 

    } 
+1

その例外のための素晴らしいvarible名前。あなたにそれを与えるようになった。 – Dbl

+0

@SamOnela LIKE私は、それが十分ではないかもしれないと言って、CRに掲示されたときにもっと多くのコードを表示する必要があるかもしれません。それはあなたが主張しているように、コードを仮説にしたり、それを適合させるための不適切なサイトにしたりしません。それはちょっとした変更が必要であることを意味します。あなたはちょうど* that *と言うことができました。 – Servy

答えて

3

は、インターフェイスを追加:

public interface ITableAdapter 
{ 
    Fill(IdataTable dt); 
} 
public interface IDataTable { } 

は、あなたのクラスを更新

public class TSNKF30_STRUCT_ELMNTTableAdapter : ITableAdapter {} 
public class TSNKF30_STRUCT_ELMNTDataTable : IDataTable {} 

エクステンションを書くシオン方法次に

public static class TableAdapterExtensions 
{ 
    public static void FillWith(this ITableAdapter adapter, IDataTable dataTable) 
    { 
    try 
    { 
     adapter.Fill(dataTable); 
    } 
    catch(SystemException sex) 
    { 
     GenericExcHandler(sex, DataTable.TableName); 
    } 
    } 
} 

用法:

var ta = new TSNKF30_STRUCT_ELMNTTableAdapter(); 
var dt = new dsGrids.TSNKF30_STRUCT_ELMNTDataTable(); 
ta.FillWith(dt); 
関連する問題