以下方法或属性之间的调用不明确错误-c#visual studio 2019

以下方法或属性之间的调用不明确错误-c#visual studio 2019,c#,.net,visual-studio,ui-automation,C#,.net,Visual Studio,Ui Automation,Im获取错误:以下方法或属性之间的调用不明确:“AutElemMethods.Selector(AutomationElement)”和“AutElemEx.Selector(AutomationElement)”来自Im使用的两个类。 我如何解决这个问题? 代码: 公共静态类自动方法 { 公共静态字符串选择器(此AutomationElement元素) { AutomationElement父元素=TreeWalker.ControlViewWalker.GetParent(元素

Im获取错误:以下方法或属性之间的调用不明确:“AutElemMethods.Selector(AutomationElement)”和“AutElemEx.Selector(AutomationElement)”来自Im使用的两个类。 我如何解决这个问题? 代码:

公共静态类自动方法
{       
公共静态字符串选择器(此AutomationElement元素)
{
AutomationElement父元素=TreeWalker.ControlViewWalker.GetParent(元素);
if(父项==AutomationElement.RootElement)
{
返回$“”;
}
if(string.IsNullOrWhiteSpace(element.Name()))
{
返回parent.Selector()+“”;
}
返回$“{parent.Selector()}”;
}
}
公共静态类AutElemEx
{

专用静态字符串选择器(此AutomationElement元素) { string name=string.IsNullOrWhiteSpace(element.name())?“”:$@“'name':“{element.name()}',”; string type=string.IsNullOrWhiteSpace(element.type())?“”:$@“'type':“{element.type()}',”; 返回“{”(名称+类型).Trim(',')+“}”; } }
扩展方法的作用域在命名空间中,但不在包含它们的静态类中。因此,您的两个扩展方法具有相同的名称和参数,因此编译器认为它们具有相同的签名

你有几个选择

  • 重命名其中一个方法
  • 将它们放在不同的名称空间和 仅在给定代码文件中导入所需的命名空间
  • 静态调用该方法,而不是像使用扩展方法一样使用它,例如:
    AutElemEx.Selector(myElement)
  • 如果它们必须在同一命名空间中,则只能将所需的扩展类放入给定的代码文件中,例如使用static MyNamespace.AutElemEx

扩展方法的作用域在命名空间中,但不在包含它们的静态类中。因此,您的两个扩展方法具有相同的名称和参数,因此编译器认为它们具有相同的签名

你有几个选择

  • 重命名其中一个方法
  • 将它们放在不同的名称空间和 仅在给定代码文件中导入所需的命名空间
  • 静态调用该方法,而不是像使用扩展方法一样使用它,例如:
    AutElemEx.Selector(myElement)
  • 如果它们必须在同一命名空间中,则只能将所需的扩展类放入给定的代码文件中,例如使用static MyNamespace.AutElemEx

此错误表示您有两个同名的扩展方法,但在代码中它们的名称不同。专用静态字符串选择器(此AutomationElement元素){string name=string.IsNullOrWhiteSpace(element.name())?“”:$@“name”:“{element.name()”,“string type=string.IsNullOrWhiteSpace(element.type())?”:$@“'Type':'{element.Type()}',“return”{“+(name+Type).Trim(',')+“}”;}将方法放在不同的名称空间中,只导入其中一个,或者重命名其中一个methods@sparky. 类名与扩展方法无关。方法名/签名必须在所有类中的所有扩展方法上都是唯一的,以防您无法获得它。如果不是从同一个类内部调用私有扩展方法,则该方法毫无意义。错误表明有两个扩展方法具有相同的名称,但在代码中它们具有不同的名称。私有静态字符串选择器(此AutomationElement元素){string name=string.IsNullOrWhiteSpace(element.name())?“:$@”'Name':“{element.Name()}”,“string type=string.IsNullOrWhiteSpace(element.type())?”:$@“'type':“{element.type()}”,“return”{+(Name+type).Trim(',')+“}”;”要么将方法放在不同的名称空间中,只导入其中一个,要么重命名其中一个methods@sparky.类名与扩展方法无关。方法名/签名必须在所有类中的所有扩展方法上都是唯一的,以防万一您得不到它。如果你不能从同一个类内部调用它。
public static class AutElemMethods
{       
   public static string Selector(this AutomationElement element)
    {
        AutomationElement parent = TreeWalker.ControlViewWalker.GetParent(element);
        if (parent == AutomationElement.RootElement)
        {
            return $"<{element.Name()}>";
        }
        if (string.IsNullOrWhiteSpace(element.Name()))
        {
            return parent.Selector() + "<>";
        }
        return $"{parent.Selector()}<{element.Name()}>";
    }
}

    public static class AutElemEx
{
    private static string Selector(this AutomationElement element)
    {
        string name = string.IsNullOrWhiteSpace(element.Name()) ? "" : $@"'Name':'{element.Name()}',";
        string type = string.IsNullOrWhiteSpace(element.Type()) ? "" : $@"'Type':'{element.Type()}',";
        return "{" + (name + type).Trim(',') + "}";
    }
}