1

我有一些存储文件数据的表,例如TabA, TabB, TabC, ... TabX。他们每个人都有相同的列FileTypeID

对于每个表,我需要使用扩展方法根据列的条件获取行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 回答