每当我在wpf项目中添加lambda表达式(采用以下形式)时,都会出现错误。错误与表达式无关,但是每当我添加一个表达式时它们就会到达。

这是我的最新消息:

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无关。无论如何,.cs文件中都引用了System.Windows,该文件还包含:
public class PointOfSaleViewModel : DependencyObject

当删除lambda表达式时,它很高兴进行编译。

现在,增加困惑...这很好:
ServiceFactory.Instance.ShiftDataRefreshedEvent += ( s, e ) =>
{
    Account = new ObservableCollection<BasketItemSummary>( ServiceFactory.Instance.CurrentContact.Account );
    Basket = new ObservableCollection<BasketItemSummary>( ServiceFactory.Instance.Shift.OpenCurrentContact.Basket );
};

因此,导致错误的原因不是lambda表达式本身,我不知道为什么不进行编译,并且很想在我的头脑爆炸之前得到一些输入。

更新

同事建议的替代语法
BasketItemIDs = bisList.ToList().ConvertAll( delegate( BasketItemSummary basketItem ) { return basketItem.ID; } )

也失败,给出相同的编译错误。

最佳答案

在我看来,BasketItemSummary(或其中一个属性)暴露了对公共(public)API的这种依赖关系-也许它是该类型的基类。简单:按照指示添加缺少的引用。

07-24 09:50
查看更多