У меня есть связь между двумя базовыми классами:
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
}
И их конкретные реализации как таковые:
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
};
}
}
По документации MSDN
http://msdn.microsoft.com/en-us/library/ms379564%28VS.80%29.aspx (примерно на полпути вниз)
и похожий (но не идентичный) квест на SO
Указание типа возврата абстрактного метода из базового класса в соответствии с подклассом
Я могу использовать мою конкретную реализацию для возвращаемого типа моего переопределенного метода GetCandidates, но это не то, чего я хочу, я хочу использовать конкретную реализацию другого абстрактного класса. Это родительская / дочерняя база данных. Возможно ли то, что я пытаюсь достичь? В настоящее время я получаю ошибку времени компиляции, что мой тип возвращаемого значения GetCandidates не совпадает.
Спасибо