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 に答える