У меня возникает проблема при создании Generic EntitySet, возвращаемого Reflection как EntitySet с типом BaseClass.Кастинг Generic EntitySet, возвращаемый Reflection как EntitySet с базовым классом
Все мои классы Linq2SQL наследуют от базового класса с именем LinqClassBase так:
public partial class MyTable1 : LinqClassBase
Я пишу метод в этом базовом классе, который должен перебора всех дочерних EntitySets.
Я могу получить PropertyInfo OK в качестве соответствияEntitySetProperty.
// The GetMatchingProperty method (not shown)
// simply gets all the properties with Type EntitySet
var matchingProperty = entitySetProperty.GetMatchingProperty(this.GetType());
Я также могу получить его значение ОК.
// This returns EntitySet<MyTable1>
var matchingSet = matchingProperty.GetValue(this);
Проблема в том, что я не могу вызвать метод ToList, потому что объект не сильно типизирован.
var newList = matchingSet.ToList().ConvertAll(
x => x.MyLinqBaseClassMethod()
);
Я попытался литья как EntitySet но он возвращает нуль:
// This returns null
var matchingSet = matchingProperty.GetValue(this) as EntitySet<LinqClassBase>;
Почему это произнесения возвращение нуль? Я предполагаю, что C# не может передавать EntitySet в EntitySet.
Если этот прилив невозможен, есть ли другой способ бросить его?
Примечание: Я думал об использовании другого слоя Reflection для вызова метода ToList, но затем я бы столкнулся с той же проблемой для метода ConvertAll и снова для метода MyLinqBaseClassMethod.