我正在使用类表继承实现类型层次结构。但是,我在返回基类型而不是子类型的静态方法时遇到了问题。我找到了解决办法,但它不太漂亮。看看下面的类使用Castle ActiveRecord类表继承在派生类上调用FindAll
public class Entity : ActiveRecordBase<Entity> { }
public class Person : Entity {}
调用
Person.FindAll();
实际返回的人[]实体[]代替。我可以通过在所有派生类中实现FindAll来解决这个问题,但是谁愿意这样做呢?我还能够创建一个基类,所有的类都是从派生并实现
public R[] FindAll<R>() {}
,但我只是不喜欢的
Person.FindAll<Person>()
一下有什么办法能够调用的FindAll ()从派生类,实际得到派生类而不是基类?
这个问题是你不能映射实体''作为它是一个开放的泛型类。 –
2010-11-03 23:03:42
我之前使用过这种模式,其中实体将用于保存一些常用的值(例如:id)和方法,并作为所有实体的共同祖先。我不明白你为什么想要映射它。 – gcores 2010-11-03 23:09:39
@gcores:所以你可以把实体的属性放在一个单独的类中。 – 2010-11-03 23:13:40