以下方法或属性之间的调用不明确错误-c#visual studio 2019
Im获取错误:以下方法或属性之间的调用不明确:“AutElemMethods.Selector(AutomationElement)”和“AutElemEx.Selector(AutomationElement)”来自Im使用的两个类。 我如何解决这个问题? 代码:以下方法或属性之间的调用不明确错误-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(元素
公共静态类自动方法
{
公共静态字符串选择器(此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代码>
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(',') + "}";
}
}