同じインターフェースを使用して2つのエンティティを取得しました。私は .Cast<IKurs<ITeacherToCourse<IAdditionalTeacherData>, IAdditionalTeacherData>>()
でそれらの両方をキャストしようとした、あなたが見ることができるように同じインターフェースで異なるタイプの2つのリストをキャストしてマージする
public async Task<IEnumerable<IKurs<ITeacherToCourse<IAdditionalTeacherData>, IAdditionalTeacherData>>> GetCourses(bool takeXtr)
{
IEnumerable<IKurs<ITeacherToCourse<IAdditionalTeacherData>, IAdditionalTeacherData>> result = new List<IKurs<ITeacherToCourse<IAdditionalTeacherData>, IAdditionalTeacherData>>();
if (takeXtr)
using (var context = new Context())
{
var courses = context.XtrCourses.Include(x=>x.TeachersToCourses).Where(_someCourseFilterForAgs);
result.Concat(await courses.ToListAsync()).Cast<IKurs<ITeacherToCourse<IAdditionalTeacherData>, IAdditionalTeacherData>>();
}
using (var context = new Context())
{
var courses = context.AgsCourses.Include(x=>x.TeachersToCourses).Where(_someCourseFilterForAgs);
result.Concat(await courses.ToListAsync()).Cast<IKurs<ITeacherToCourse<IAdditionalTeacherData>, IAdditionalTeacherData>>();
}
return result;
}
(つまり、InvalidCastExceptionがスローされます)
これらは私です:私は、私はIKurs
の1つのリストにエンティティフレームワークから取得した結果の両方をマージしたいですCourse
クラス、IKurs<T1<T2>, T1>
を実装するが、それらのT1とT2の両方が異なる(しかし、まだ彼らは同じインタフェースを使用する)である:
public class XtrCourse : Core_Xtr_Course, IKurs<XtrTeacherToCourse, XtrAdditionalTeacherData>
{
public int Nr { get; set; }
// properties
public ICollection<XtrTeacherToCourse> TeachersToCourses { get; set; }
}
public class AgsCourse : Core_Ags_Course, IKurs<AgsTeacherToCourse, AgsAdditionalTeacherData>
{
public int Nr { get; set; }
// properties
public ICollection<AgsTeacherToCourse> TeachersToCourses { get; set; }
}
public interface IKurs<TTeacherToCourse, TAdditionalTeacherData>
where TTeacherToCourse : ITeacherToCourse<TAdditionalTeacherData>
where TAdditionalTeacherData: IAdditionalTeacherData
{
int Nr { get; set; }
ICollection<TTeacherToCourse> TeachersToCourses { get; set; }
}
public interface ITeacherToCourse<T> where T : IAdditionalTeacherData
{
int Nr { get; set; }
T AdditionalTeacherData { get; set; }
}
public interface IAdditionalTeacherData
{
// properties
}
クラスAgsTeacherToCourse
とXtrTeacherToCourse
はITeacherToCourse
クラスAgsTeacherToCourse
とXtrTeacherToCourse
を実装して、両方の私は1つのリストにそれらをマージすることができますどのようにITeacherToCourse
を実装して、両方の?実物で
、両方のコースリストは異なるコンテキストから来ます。だからこそ、私はGetCourses()
の文脈を二度始めるのです。
うわー。完璧。 「アウト」はまさに問題でした。サポートのためのTHX :) –