我有一个奇怪的问题。我有一种方法需要IEnumerable
dynamic
以后我必须迭代来做一些事情。
调用该方法的代码是:
GuardarControlCristalesPedidos(
items.Select(o => new {o.Id, o.CantidadRecibida, o.Cerrado}));
此方法编码为
public static void GuardarControlCristalesPedidos(IEnumerable itemsAGuardar)
{
var session = FactoryProvider.GetCurrentSession();
using (var t = session.BeginTransaction())
{
foreach (dynamic item in itemsAGuardar)
{
var cItem = session.Load<PedidoItem>(item.Id);
cItem.CantidadRecibida = item.CantidadRecibida;
cItem.Cerrado = item.Cerrado;
session.Save(cItem);
}
t.Commit();
}
}
现在,我遇到的问题是程序无法抛出'item.Id' produjo una excepción de tipo 'Microsoft.CSharp.RuntimeBinder.RuntimeBinderException'
但奇怪的是,当我使用调试器访问dynamic
变量时似乎没问题(IDE显示成员正常,但在我尝试访问item.Id
时失败
这里发生了什么?
答案 0 :(得分:0)
这可能会有效:
var cItem = session.Load<PedidoItem>((int)item.Id);