1

3 種類の EntitySet で実行する必要があるオプションがあります。ただし、各タイプのデータは同じです。Linq-to-SQL は、これら 3 つのタイプを作成して、データベース内のいくつかの「トゥイーン」テーブルと一致させます。

以下のように、一般的な 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

これら 3 つのクラスがほぼ同じであると言う場合は、共通のメンバーを持つインターフェイスまたは基本クラスを作成できます。

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 に答える