C# 问题:扩展方法必须是静态的
我有这个错误 第一个错误: 扩展方法必须是静态的 第二个错误: “System.Windows.Controls.ComboBox”不包含的定义 “GetClientItemId”和没有扩展方法“GetClientItemId”接受 类型为“System.Windows.Controls.ComboBox”的第一个参数可能是 找到(是否缺少using指令或程序集引用?) 我尝试将静态应用于父类,如: 以前-C# 问题:扩展方法必须是静态的,c#,wpf,wcf,c#-4.0,C#,Wpf,Wcf,C# 4.0,我有这个错误 第一个错误: 扩展方法必须是静态的 第二个错误: “System.Windows.Controls.ComboBox”不包含的定义 “GetClientItemId”和没有扩展方法“GetClientItemId”接受 类型为“System.Windows.Controls.ComboBox”的第一个参数可能是 找到(是否缺少using指令或程序集引用?) 我尝试将静态应用于父类,如: 以前- public partial class pgRPhase : Window 之后-
public partial class pgRPhase : Window
之后-
public static partial class pgRPhase : Window
但我随后收到其他错误和问题
WPF编码-
private async Task LoadRep(TruckServiceClient TSC, ComboBox combobox)
{
List<ClientItems> clientItems = new List<ClientItems>();
foreach (var rep in await TSC.GetRepByCompAsync())
clientItems.Add(new ClientItems { Id = rep.Id, Name = rep.Name, Contact = rep.ContactNumber, Email = rep.Email, CompanyId = rep.CompanyId });
combobox.ItemsSource = (clientItems.ToArray().Where(x => x.CompanyId == cbCustomer.GetClientItemId()));
combobox.IsEnabled = true;
combobox.SelectedIndex = 1;
combobox.DisplayMemberPath = "Id";
}
public static int GetClientItemId(this ComboBox combobox)
{
if (combobox.SelectedItem == null)
return 0;
else
return ((ClientItems)combobox.SelectedItem).Id;
}
专用异步任务LoadRep(TruckServiceClient TSC,组合框组合框)
{
List clientItems=新列表();
foreach(wait TSC.GetRepByCompAsync()中的var rep)
添加(新客户端项{Id=rep.Id,Name=rep.Name,Contact=rep.ContactNumber,Email=rep.Email,CompanyId=rep.CompanyId});
combobox.ItemsSource=(clientItems.ToArray()。其中(x=>x.CompanyId==cbCustomer.GetClientItemId());
combobox.IsEnabled=true;
combobox.SelectedIndex=1;
combobox.DisplayMemberPath=“Id”;
}
公共静态int GetClientItemId(此组合框组合框)
{
if(combobox.SelectedItem==null)
返回0;
其他的
return((ClientItems)组合框.SelectedItem.Id;
}
您必须将GetClientItemId
放在一个单独的类中,并使该类成为静态的。(扩展方法需要在静态类中)
通过将窗口
类设置为静态,可以破坏整个代码(不能实例化窗口实例,这是WPF工作所必需的)。如果你放弃这个方法,它会起作用的
注意:将其作为扩展方法很好,但如果将其作为通过GetClientItemId(cbCustomer)
调用的常规方法,则它可能工作得很好。那么您就不需要另一个类了。第二个注意事项:有一个wait:foreach(wait TSC.GetRepByCompAsync()中的var rep)
。(无可否认,当你写这篇文章时,它可能不在那里……)