異なる種類の人(バイヤー、売り手、エージェントなど)を格納するPersonsテーブルがあります。私たちのORMはEntity Framework CodeFirst(CTP5)です。私たちは良いTDDとモックのためにリポジトリパターンを使用しています。 PersonRepositoryで私はこのようなことを行うことができますので、特定の型を返すようにしたい:Generics and Entity Framework:列の値に応じて異なる型を返す方法
Agent a = repository.Get<Agent>(5005); // Where 5005 is just an example Id for the person
a.SomeAgentProperty = someValue;
Buyer b = repository.Get<Buyer>(253); // Again, a simple PersonId.
b.SomeBuyerProperty = someOtherValue;
アイデアは、私はリポジトリからそれを得るとき、私は取得していますどんな人か知っていることです。そして、はい、私はちょうどGetBuyer(int PersonId)、GetSeller(int PersonId)というXのGetメソッドを作成することができます。しかし、それはコードのにおいを持っています。
ジェネリック関数はどのように見えますか?ここで
は私のリポジトリのインターフェースは、これまでのところです:
public interface IPersonRepository
{
Person Get(int PersonId); // To get a generic person
T Get<T>(int PersonId); // To get a specific type of person (buyer, agent, etc.)
void Save(Person person);
void Delete(int p);
}
そして、私の具体的な実装:
public T Get<T>(int PersonId)
{
//Here's my question: What goes here?
}
? –