1

ファイルのデータを格納するテーブルがいくつかあります。たとえばTabA、、、、...。それぞれに同じ列があります。TabBTabCTabXFileTypeID

テーブルごとに、拡張メソッドを使用して、列の状態に応じて行を取得する必要がありFileTypeIDます。そうするために、私はそのような拡張メソッドを持っています:

public static class FilesTab_Extenders
{
    public static IList<TabA> GetSpecificFiles(this EntityCollection<TabA> mc)
    {
        ///
    }
}

ただし、残りのテーブルに同じコードを無意識に複製したくありません。唯一の違いはパラメータ-this EntityCollection<TabB>などthis EntityCollection<TabC>です。では、そのシナリオのユニバーサルコードを作成することはどういうわけか可能ですか?

4

1 に答える 1

1

私にとってこれを行う最も簡単な方法は、インターフェースを使用することです。次に、部分クラスにこのインターフェイスを実装させ、拡張メソッドで使用します。

public interface IFileTypeable
{
    Guid FileTypeId { get; set;}
}

次に、このテンプレートに従うTabA、TabB、TabC、...TabXごとに部分的なクラスファイルを作成します。

namespace MyDBContextNamespace
{
    public partial class TabA : IFileTypeable
    {
        // no need to do anything, the property is already implemented on the original class file.
    }

    public partial class TabB : IFileTypeable
    {
        // no need to do anything, the property is already implemented on the original class file.
    }
}

最後に、拡張方法は次のように変更されます。

public static IList<IFileTypeable> GetSpecificFiles(this EntityCollection<IFileTypeable> mc)             
{             
    foreach (var item in mc)
    {
        Guid fileTypeId = item.FileTypeId;       
    }
}
于 2012-09-06T17:18:21.457 に答える