C# 问题:扩展方法必须是静态的

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 之后-

我有这个错误

第一个错误:

扩展方法必须是静态的

第二个错误:

“System.Windows.Controls.ComboBox”不包含的定义 “GetClientItemId”和没有扩展方法“GetClientItemId”接受 类型为“System.Windows.Controls.ComboBox”的第一个参数可能是 找到(是否缺少using指令或程序集引用?)

我尝试将静态应用于父类,如:

以前-

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)
。(无可否认,当你写这篇文章时,它可能不在那里……)