首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SimpleRepository和抽象

SimpleRepository和抽象
EN

Stack Overflow用户
提问于 2009-08-11 14:20:41
回答 2查看 141关注 0票数 0

我一直在使用Sub Sonic 3.x.x.x,我遇到了一些我需要帮助的事情。我使用了一个抽象类和一个工厂模式等等。这基本上就是问题所在:

代码语言:javascript
复制
public abstract class Person
{
}

public class Male : Person
{
}

public class Female : Person
{
}

....

我怎么才能让它工作呢?

代码语言:javascript
复制
String personType = "male";
Type myType = GetPersonTypeFromFactory(personType);

SimpleRepository rep = new SimpleRepository();

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

我不能把rep.All<myType>放进去,我怎么才能让它工作呢?

EN

回答 2

Stack Overflow用户

发布于 2009-08-12 13:07:02

SimpleRepository无法持久化抽象对象。但是我不能和ActiveRecord说话。

我相信你知道这一点,但是如果你确实使用了SimpleRepository,并且你希望得到一种类型的所有东西,你可以使用rep.All<Male>()。这就消除了你的工厂,我确信这个例子是你在真实世界中所做的简化,所以这可能不是你想要的。

票数 0
EN

Stack Overflow用户

发布于 2009-08-19 01:39:10

值得记住的是,反序列化抽象对象总是一件痛苦的事情,因为抽象类没有默认的构造函数;话虽如此,没有什么可以阻止你反序列化到一个具体的类,并从工厂返回接口/抽象类。

当您将数据持久化/检索到DB时,您只需通过具体的do对象执行此操作,并通过复制构造函数在工厂中实例化BO对象,并使其实现与DO对象相同的接口。但是,对于模式,您必须问一问您的代码得到了什么。

检索: DO --> Factory --> BO

存储: BO -->外观/控制器--> DO

DO和BO实现IYourObject接口,或者从YourObjectBase派生,它具有复制构造函数YourObjectBase(YourObjectBase源)。

如果你没有多个BO类型,会有很多代码行:-)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1260678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档