我试图从实体框架对象中的多个属性中获取值。共有11个属性,每个属性都分配了一个日期。我尝试过使用反射,但我一直收到错误“对象与目标类型不匹配”
public void CheckWeekStatus()
{
var currentFlexi = from c in FlexiContext.FlexPeriods where c.FlexiCurrentYear == true select c;
FlexPeriod s = new FlexPeriod();
PropertyInfo[] properties = s.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance);
foreach (var info in properties)
{
var o = info.GetValue(currentFlexi,null);
}
}
FlexPeriod是包含所有属性的类型。我可以遍历属性,但显然我正在尝试访问值的方式有问题。任何建议将不胜感激。
答案 0 :(得分:5)
首先,您可以在不实例化对象的情况下获取Type
:
PropertyInfo[] properties = typeof( FlexPeriod ).GetProperties( ...
GetValue
失败的原因是currentFlexi
是FlexPeriod
个对象(实际上是IEnumerable<FlexPeriod>
)的集合,而不是FlexPeriod
的单个实例。