1

別々の型指定されたデータセット データ テーブルを同じメソッドに渡そうとしています。データテーブルは似ていますが、異なります。このメソッドは、データテーブルに対して同じ機能を実行します。本質的にメソッドを複製し、データテーブルの型に応じてパラメーターの型を変更する代わりに、データテーブルのカスタムインターフェイスを作成する方法に沿って何かを行う方法はありますか?その方法で、インターフェイスのパラメーターを持つ単一のメソッドを持つことができますタイプ?

私が現在持っているもの:

private PassdownDataset.SalesOrdersForManagerDataTable datatable1;
private PassdownDataset.SalesOrdersDataTable datatable2;

public SomePublicMethod()
{
PopulateDepartmentName(datatable1);
PopulateDepartmentName(datatable2);
}

private void PopulateDepartmentName(PassdownDataset.SalesOrdersForManagerDataTable dt)
{
//(operations performed on datatable)
}

private void PopulateDepartmentName(PassdownDataset.SalesOrdersDataTable dt)
{
//(operations performed on datatable)
}

私がしたいこと:

private PassdownDataset.SalesOrdersForManagerDataTable datatable1;
private PassdownDataset.SalesOrdersDataTable datatable2;

public SomePublicMethod()
{
PopulateDepartmentName(datatable1);
PopulateDepartmentName(datatable2);
}

private void PopulateDepartmentName(
               PassdownDataset.CommonInterfaceForBothDataTables dt)
{
//(operations performed on datatable)
}
4

1 に答える 1

0

継承を使用してこれを解決できると確信しています。しかし、それはぎこちなく強制的なものになるかもしれません。

C# 4 で追加された動的機能は、このような場合に非常に便利であることがわかりました。主な欠点は、静的型付けとリファクタリングのしやすさが失われることです。dynamic の使用が非常にローカライズされている場合 (単一のヘルパー メソッド内に含まれている場合など) は問題ないと思います。

例として、すべてのデータベース エンティティにCreateDateTimeフィールドがあり、それを初期化するヘルパー メソッドが必要だとします。これは、ダイナミックの優れた使用例です。別の方法は、すべてのエンティティにインターフェイスを継承させることです。

于 2012-12-13T17:27:11.310 に答える