J'implémente une hiérarchie de types en utilisant l'héritage de table de classes. Cependant, j'ai des problèmes avec les méthodes statiques qui retournent le type de base au lieu du type enfant. J'ai trouvé un moyen de contourner cela mais ce n'est pas trop joli. Prenez les classes suivantesAppel de FindAll sur des classes dérivées en utilisant l'héritage de table de classes Castle ActiveRecord
public class Entity : ActiveRecordBase<Entity> { }
public class Person : Entity {}
appelant
Person.FindAll();
retourne en fait une entité [] au lieu d'une personne []. Je peux contourner cela en implémentant FindAll dans toutes les classes dérivées, mais qui veut faire ça? Je suis également en mesure de créer une classe de base que toutes les classes dérivent et mettre en œuvre
public R[] FindAll<R>() {}
mais je n'aime pas le look de
Person.FindAll<Person>()
Est-il possible de pouvoir appeler FindAll() des classes dérivées et obtient réellement les classes dérivées au lieu de la classe de base?
Le problème est que vous ne pouvez pas la carte 'entité' comme c'est une classe générique ouverte. –
J'ai déjà utilisé ce modèle, où Entity doit être utilisé pour contenir des valeurs communes (ex: id) et des méthodes, et comme un ancêtre commun à toutes les entités. Je ne vois pas pourquoi vous voudriez le cartographier. – gcores
@gcores: vous pouvez donc placer les propriétés de Entity dans une classe séparée. –