2009-08-11 15 views
0

私はサブソニック3.x.x.xを使用してきたと私は助けが必要なものに遭遇しました。 私は ...抽象クラスとファクトリパターンなどを使用していますし、これは基本的な問題である:SimpleRepositoryと抽象

public abstract class Person 
{ 
} 

public class Male : Person 
{ 
} 

public class Female : Person 
{ 
} 

.... 

私はこの仕事を得るにはどうすればよいですか?

String personType = "male"; 
Type myType = GetPersonTypeFromFactory(personType); 

SimpleRepository rep = new SimpleRepository(); 

var all = rep.All<...>().ToList(); 

私はどのように私はこの作業を取得することができますので、rep.All<myType>を置くことができませんか?

+0

:-)複数のBOタイプを持っていない場合は、なぜあなたのPersonクラスの抽象はありますか?理由はあると思いますが、あなたのコードからそれを見ることはできません –

答えて

0

SimpleRepositoryは抽象的である、オブジェクトを永続化することはできません。私はActiveRecordに話すことはできません。

私はあなたがこれを知っていると確信しているが、あなたはSimpleRepositoryを使用しなかった、あなたがrep.All<Male>()を行うことができ一種類のすべてを取得するために探している場合。これはあなたの工場を排除し、私は例が、これはおそらくあなたが望むものではありませんので、あなたは現実の世界でやっていることから、簡略化されていることを確認しています。

0

それは、脱直列化抽象オブジェクトはデフォルトコンストラクタを持たない抽象クラスとしてお尻の痛みが常にあることを念頭に値します。それを言っていると、具体的なクラスへの逆シリアル化、そしてあなたの工場からのインターフェイス/抽象クラスの返却を止めるものは何もありません。
あなたは/あなたは自分の具体的な経由でそれを行うオブジェクトをインスタンス化し、あなたのBOオブジェクトを工場でコピーコンストラクタを経由して、それがDOオブジェクトと同じインタフェースを実装しなければならないのDBにデータを取得持続。しかし、いつものように、パターンのために、あなたはコードのために何を得ているのかを尋ねなければなりません。ストアに> BO

- >ファクトリー - DOを:: BO - >ファサード/コントローラ - >

DOとBOはIYourObjectインターフェイスを実装する、またはから派生DO取得するには

YourObjectBaseは、コピーコンストラクタYourObjectBase(YourObjectBase src)を持ちます。しかし、コードの行の

たくさんあなたは好奇心から