1

我有一个选项需要在三种类型的 EntitySets 上运行;但是,每种类型的数据是相同的。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) { }
4

1 回答 1

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++;
}
于 2012-06-26T21:21:17.753 回答