Я реализую иерархию типов, используя наследование таблицы классов. Однако у меня возникают проблемы со статическими методами, возвращающими базовый тип вместо дочернего типа. Я нашел способ обойти это, но это не слишком красиво. Возьмем следующие классыВызов FindAll на производных классах с использованием наследования таблицы классов Castle ActiveRecord
public class Entity : ActiveRecordBase<Entity> { }
public class Person : Entity {}
вызова
Person.FindAll();
фактически возвращает Entity [] вместо Person []. Я могу обойти это, реализуя FindAll во всех производных классах, но кто хочет это сделать? Я также был в состоянии создать базовый класс, что все классы наследуют от реализации и
public R[] FindAll<R>() {}
, но я просто не нравится внешний вид
Person.FindAll<Person>()
Есть ли способ, чтобы быть в состоянии назвать FindAll() из производных классов и фактически получить производные классы вместо базового класса?
Проблема с этим вы не можете отобразить '' Entity, как это открытый общий класс. –
Я использовал этот шаблон раньше, когда Entity должен использоваться для хранения некоторых общих значений (ex: id) и методов и как общего предка для всех объектов. Я не понимаю, почему вы хотите отобразить его. – gcores
@gcores: поэтому вы можете поместить свойства Entity в отдельный класс. –