【发布时间】:2015-06-17 16:04:58
【问题描述】:
我的一些实体框架类实现了某个接口,比如IHasYearColumn,这意味着该表有一个year 列(int)。
我想遍历所有带有年份列的表并做一些工作。
我设法使用以下方法获取相关类型:
var typesWithYear = AppDomain.CurrentDomain.GetAssemblies()
.SelectMany(a=>a.GetTypes())
.Where(t=>typeof(IHasYearColumn).IsAssignableFrom(t);
我验证了这是可行的,并且确实得到了我想要的所有类型。
现在,我想遍历各个表,从所有记录中获取年份值:
foreach (t in typesWithYear)
myDbEntites.Set<t>().Select(x=>x.Year);
这显然不会编译,因为t 未被识别为IHasYearColumn。因此,我尝试将 typesWithYear 中的所有类型转换为 IHasYearColumn 但这无济于事。我收到了InvalidCastException。
欢迎任何想法。
编辑 找到答案here。
【问题讨论】:
标签: c# entity-framework reflection types interface