如何使用带有EntitySet <t> </t> </t>的泛型<t>

时间:2012-06-26 20:57:43

标签: c# .net linq-to-sql entity

我有一个需要在三种类型的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) { }

1 个答案:

答案 0 :(得分:2)

如果你说这三个类几乎相同 - 那么你可以用普通成员创建一个接口或基类:

interface IHorizontal
{
  int SuperValue { get; set; }
}

然后你需要从这个接口继承LeafHorizo​​ntal,BayHorizo​​ntal和SideliteHorizo​​ntal类:

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++;
}