我正在使用類表繼承實現類型層次結構。但是,我在返回基類型而不是子類型的靜態方法時遇到了問題。我找到了解決辦法,但它不太漂亮。看看下面的類使用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