为什么我会有这个错误,以及如何修复它。感谢你的帮助
错误4无法将lambda表达式转换为类型“”System.Delegate“”,因为它不是委托类型
void provider_GetAssignmentsComplete(object sender, QP_Truck_Model.Providers.GetAssignmentsEventArgs e) {
lvMyAssignments.Dispatcher.BeginInvoke(() =>
{
lvMyAssignments.ItemsSource = e.HandOverDocs;
});
}发布于 2010-08-11 23:07:05
Lambda表达式在某些情况下不能隐式转换为委托。具体地说,如果该方法需要Delegate类型,则必须首先显式地强制转换lambda,以便编译器接受它。
您所能做的是显式地转换lambda,这应该允许您使用BeginInvoke
lvMyAssignments.Dispatcher.BeginInvoke( (Action)(() =>
{
lvMyAssignments.ItemsSource = e.HandOverDocs;
})); 通常,如果你有一个带有强类型委托签名的方法,比如:
public static void BeginInvoke( Action d ) { ... }编译器可以将lambda表达式转换为所需的适当委托签名。但如果该方法是松散类型的:
public static void BeginInvoke( Delegate d ) { ... }编译器不会接受lambda。但是,您可以将lambda表达式转换为特定的委托签名(比如Action),然后将其传递给该方法。编译器不能自动为您做这件事,因为有许多不同的委托类型可能是lambda签名的有效匹配...编译器没有办法知道哪一个是正确的。
发布于 2010-08-11 23:07:13
将其强制转换为委托对象,如Action
lvMyAssignments.Dispatcher.BeginInvoke((Action)(() => lvMyAssignments.ItemsSource = e.HandOverDocs)));https://stackoverflow.com/questions/3459742
复制相似问题