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