將由Reflection返回的泛型實體集轉換爲具有BaseClass類型的EntitySet時出現問題。使用基類類型將由Reflection反射返回的泛型實體集作爲實體集投射
我所有的LINQ2SQL類名爲LinqClassBase這樣一個基類繼承:
public partial class MyTable1 : LinqClassBase
我寫這封信是需要通過所有子EntitySets遍歷基類的方法。
我可以檢索PropertyInfo OK作爲matchingEntitySetProperty。
// 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的,但它返回null:
// This returns null
var matchingSet = matchingProperty.GetValue(this) as EntitySet<LinqClassBase>;
爲什麼這個轉換返回NULL?我猜是因爲C#不能將EntitySet轉換爲EntitySet。
如果這個演員陣容是不可能的,有沒有另一種方法來鑄造它?
注意:我想過使用另一層Reflection來調用ToList方法,但後來我遇到了ConvertAll方法和MyLinqBaseClassMethod的同樣的問題。