场景:我有一组使用延迟加载的实体框架实体,因此DynamicProxies
。然后有一种方法可以将一些选定的项目传递给覆盖我写为object
。我需要将List<DynamicProxies.EntityABCD>
(实际上作为object
传递)转换为List<Entity>
。
然而,以这种方式投射列表
dropInfo.Data as List<MyEntity>
将返回null。我甚至无法使用通用方法Cast<T>
,因为源列表再次作为object
传递。
我也试过
dropInfo.Data as List<object>
但它仍然会返回null。
提前致谢
编辑:管理以获得更清晰的列表
((IList)dropInfo.Data).Cast<MyEntity>()
但是我仍然需要检查错误等。
答案 0 :(得分:1)
如果您了解对象结构,可以使用动态量词:
var result = ((List<dynamic>)dropInfo.Data).Select(ConvertToMyEntityMethod).ToList();
public static MyEntity ConvertToMyEntity(dynamic obj)
{
return new MyEntity(){ SomeIntProperty = (int)obj.SomeIntProperty };
}
Dynamic允许您通过反射访问类成员而不会出现编译错误。这对于性能来说是非常糟糕的解决方案,但如果您使用MVVM绑定则非常好。