我有一些存储文件数据的表格,例如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>
等等。那么,是否有可能为该场景制作通用代码?
答案 0 :(得分: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;
}
}