moi avons une relation entre deux classes de base:types de retour génériques de méthodes abstraites/virtuelles
public abstract class RecruiterBase<T>
{
// Properties declare here
// Constructors declared here
public abstract IQueryable<T> GetCandidates();
}
public abstract class CandidateBase<T>
{
// Properties declare here
// Constructors declared here
}
Et leurs réalisations concrètes en tant que tels:
public class CandidateA : CandidateBase<CandidateA>
{
// Constructors declared here
}
public class RecruiterA : RecruiterBase<RecruiterA>
{
// Constructors declared here
// ----HERE IS WHERE I AM BREAKING DOWN----
public override IQueryable<CandidateA> GetCandidates()
{
return from c in db.Candidates
where c.RecruiterId == this.RecruiterId
select new CandidateA
{
CandidateId = c.CandidateId,
CandidateName = c.CandidateName,
RecruiterId = c.RecruiterId
};
}
}
par documentation MSDN http://msdn.microsoft.com/en-us/library/ms379564%28VS.80%29.aspx (environ à mi-chemin vers le bas) et une questoin similaire (mais non identique) sur SO Specifying the return type of an abstract method from a Base Class according to a Sub Class
Je peux utiliser mon implémentation concreate pour le type de retour de ma méthode surchargée GetCandidates mais ce n'est pas ce que je veux, je veux utiliser l'implémentation concrète d'une classe abstraite différente. Ceci est une relation de base de données parent/enfant. Est ce que j'essaye de réaliser possible? J'obtiens actuellement une erreur de temps de compilation que mon type de retour GetCandidates ne correspond pas.
Merci
Et vous me devança. –
N'aura-t-il pas besoin d'une recrue de classe publiqueA: RecruiterBase –
Crap, c'était ma suspicion mais il y a plusieurs entités dans mon modèle de données telles que manager-> candidat, candidat-> rendez-vous, etc ... Donc je Je vais devoir définir tous ces types génériques entre eux si je veux retourner des implémentations concrètes fortement typées de mes classes. Il semble que cela pourrait devenir bouffi et difficile rapidement. J'espérais qu'il y avait quelque chose qui me manquait. –