C#使用已实现的显式强制转换获取强制转换异常

星历

我有外部功能:

public int SetHeight(IWebElement column)
{
    ExtendedElement.Get(column).Click();
}

column它在调用中ExtendedElement收到参数已经是具体类型,但是由于它接受任何IWebElement我需要的Get方法。

这是ExtendedElement重要的部分:

public class ExtendedElement : IWebElement
{
    private IWebElement _Element { get; set; }
    private ExtendedElement() {}

    public static ExtendedElement Get(IWebElement element)
    {
        return new ExtendedElement()
        {
            _Element = (RemoteWebElement)element
        };
    }

    public static explicit operator RemoteWebElement(ExtendedElement element)
    {
        return (RemoteWebElement)element._Element;
    }
    // other impmlementations
}

如何编写我从Microsoft读取的转换

出于某种原因,运行代码时出现异常: System.InvalidCastException : Unable to cast object of type 'Core.Helper.ExtendedElement' to type 'OpenQA.Selenium.Remote.RemoteWebElement'.

那为什么呢?如果我过于复杂,需要更改设计,那么目标是什么?

弗洛伦特·B。

要实现保留其原始方法的自定义Web元素,请扩展RemoteWebElement

public class ExtendedElement : RemoteWebElement
{

    public static ExtendedElement Get(IWebElement element)
    {
        RemoteWebDriver driver = (RemoteWebDriver)element.WrappedDriver;
        string id = (string)typeof(RemoteWebElement)
                        .GetProperty("Id", BindingFlags.NonPublic | BindingFlags.Instance)
                        .GetValue(element, null);

        return new ExtendedElement(driver, id);
    }

    public ExtendedElement(RemoteWebDriver driver, string id)
        : base(driver, id)
    { }

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

C#显式强制转换-从KeyValuerPair的集合到Dictionary

C#类型转换:存在显式强制转换,但会引发转换错误吗?

C ++显式构造函数和强制转换

使用案例类Spark 2.1.0的显式强制转换.csv

使用基类而无需显式强制转换

C#编译器如何处理重载显式强制转换运算符?

C#中针对引用类型的内存的显式强制转换说明

指针强制指向void指针的显式强制转换

没有强制转换的C#隐式转换

如何从数据集LINQ中获取单个值而不会使用C#抛出无效的强制转换异常

存在显式转换(您是否缺少强制转换?) IPrincipal

C#dll中的C#强制转换异常

C#已签名/未签名的强制转换问题

匿名类型的C#类型强制转换异常,为什么?

隐式和显式强制转换的优缺点

泛型的显式和隐式强制转换

C ++-处理隐式/显式强制转换,同时保持灵活的代码

使用“静态隐式运算符”进行C#强制转换问题

为什么这里不需要显式强制转换?

显式强制转换为定义的类型将抛出InvalidCastException

为什么在这里需要显式强制转换

省略类型定义结构的显式强制转换

为什么Task.FromResult需要显式强制转换?

显式强制转换后会发生整数提升吗?

什么时候可以不使用强制转换而使用显式运算符bool?

使用p:pickList的类强制转换异常

无法隐式转换类型,存在显式转换(您是否缺少强制转换?)

使用Math.Floor优于显式整数强制转换有什么好处吗?

分组数据上的AVG引发错误1046:使用显式强制转换