0

我有一个奇怪的问题。我有一种方法,期望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

动态调试器观察

这里发生了什么?

4

1 回答 1

0

这可能会起作用:

var cItem = session.Load<PedidoItem>((int)item.Id);
于 2013-03-19T12:42:33.540 回答