Всякий раз, когда я добавляю лямбда-выражение (в следующей форме) в свой проект wpf, я получаю сообщение об ошибке. Ошибки не имеют ничего общего с выражением, но они появляются каждый раз, когда я добавляю одну.
вот мой последний:
using ( LeisureServiceClient client = ServiceFactory.Instance.GetLeisureService() )
{
client.Execute( ServiceFactory.Instance.ConnectionDetails, new MoveBasketItemsToAccountCommand()
{
BasketItemIDs = bisList.ToList().ConvertAll<Guid>( bis => bis.ID )
} );
}
Мне кажется, это совершенно верно, это дает следующую ошибку компиляции, выделяя client
из client.Execute(...)
.
Error 43: The type 'System.Windows.DependencyObject' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Windows, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e'.
этот код не имеет ничего общего с объектом DependancyObject. Независимо от того, System.Windows упоминается в файле .cs, который также содержит:
public class PointOfSaleViewModel : DependencyObject
, который очень рад компилированию, когда лямбда-выражение удалено.
Теперь, чтобы добавить путаницу ... это нормально:
ServiceFactory.Instance.ShiftDataRefreshedEvent += ( s, e ) =>
{
Account = new ObservableCollection<BasketItemSummary>( ServiceFactory.Instance.CurrentContact.Account );
Basket = new ObservableCollection<BasketItemSummary>( ServiceFactory.Instance.Shift.OpenCurrentContact.Basket );
};
Итак, это не само лямбда-выражение, которое вызывает ошибку, у меня нет идей относительно того, почему это не компилируется, и я очень хочу получить какую-то информацию, прежде чем моя голова взорвется.
Обновление
альтернативный синтаксис, предложенный коллегой
BasketItemIDs = bisList.ToList().ConvertAll( delegate( BasketItemSummary basketItem ) { return basketItem.ID; } )
также дает сбой, выдавая ту же ошибку компиляции.