我有一個奇怪的問題。我有一種方法,預計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顯示成員正常,但在嘗試訪問0時失敗
這到底是怎麼回事?
使用動態是一個壞的選擇。使用適當的類型。什麼是項目類型的標準(這是哪種類型的列表)?使用該類型而不是動態。 – 2013-03-19 12:09:18
是的,當然我會結束使用強大的類型......但我只是好奇這種奇怪的情況 – 2013-03-19 12:12:56
可能會在鑄造中發生一些問題。不確定。 – 2013-03-19 12:18:53