首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将反射返回的泛型EntitySet转换为具有BaseClass类型的EntitySet

将反射返回的泛型EntitySet转换为具有BaseClass类型的EntitySet
EN

Stack Overflow用户
提问于 2013-11-23 00:27:19
回答 1查看 356关注 0票数 0

在将反射返回的泛型EntitySet转换为具有BaseClass类型的EntitySet时,我遇到了一个问题。

我的所有Linq2Sql类都继承自名为LinqClassBase的基类,如下所示:

代码语言:javascript
复制
public partial class MyTable1 : LinqClassBase

我正在这个基类中编写一个方法,它需要遍历所有子EntitySets。

我可以像matchingEntitySetProperty一样检索PropertyInfo OK。

代码语言:javascript
复制
// The GetMatchingProperty method (not shown) 
// simply gets all the properties with Type EntitySet
var matchingProperty = entitySetProperty.GetMatchingProperty(this.GetType());

我也可以得到它的值。

代码语言:javascript
复制
// This returns EntitySet<MyTable1>
var matchingSet = matchingProperty.GetValue(this);

这里的问题是我不能调用ToList方法,因为对象不是强类型的。

代码语言:javascript
复制
var newList = matchingSet.ToList().ConvertAll(
  x => x.MyLinqBaseClassMethod()
);

我尝试将其转换为EntitySet,但它返回null:

代码语言:javascript
复制
// This returns null
var matchingSet = matchingProperty.GetValue(this) as EntitySet<LinqClassBase>;

为什么此强制转换返回null?我猜是因为C#不能将EntitySet转换为EntitySet。

如果这个造型是不可能的,有没有其他的方法呢?

EN

回答 1

Stack Overflow用户

发布于 2013-11-23 01:02:47

我想通了。将其转换为IEnumerable使我可以访问ToList方法,而不会导致它返回null。

代码语言:javascript
复制
var matchingSet = matchingProperty.GetValue(this) as IEnumerable<LinqClassBase>;

我仍然不知道为什么强制转换它有EntitySet失败。但至少我有我的解决方案。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20149732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档