每当我在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的这种依赖关系-也许它是该类型的基类。简单:按照指示添加缺少的引用。