我有一个需要在三种类型的EntitySet上运行的opteration;但是,每种类型的数据都是相同的。 Linq-to-SQL正在创建这三种类型,以匹配我的数据库中的一些“补间”表。
有没有办法使用通用的EntitySet类型,比如我在下面有它们?
private EntitySet<T> GetClientHorizontal(EntitySet<T> clientHorizontal) {}
解决下面的冗余问题。
private EntitySet<LeafHorizontal>
GetClientLeafHorizontal(EntitySet<LeafHorizontal> clientLeafHorizontal) { }
private EntitySet<BayHorizontal>
GetClientBayHorizontal(EntitySet<BayHorizontal> clientBayHorizontal) { }
private EntitySet<SideliteHorizontal>
GetClientSideliteHorizontal(
EntitySet<SideliteHorizontal> clientSideliteHorizontal) { }
答案 0 :(得分:2)
如果你说这三个类几乎相同 - 那么你可以用普通成员创建一个接口或基类:
interface IHorizontal
{
int SuperValue { get; set; }
}
然后你需要从这个接口继承LeafHorizontal,BayHorizontal和SideliteHorizontal类:
public partial class LeafHorizontal : IHorizontal { ... }
public partial class BayHorizontal : IHorizontal { ... }
public partial class SideliteHorizontal : IHorizontal { ... }
之后,您可以创建通用方法:
private EntitySet<T> GetClientBayHorizontal(EntitySet<T> clientBayHorizontal) where T : IHorizontal
{
clientBayHorizontal.SuperValue++;
}