簡體   English   中英

從繼承類獲取基類

[英]Get base class from inheriting class

我想從中獲取基類

public class Class1 : BrowserWindow

我試圖通過UiBrowserWindow的方法將Class1 “轉換”為UiBrowserWindow 像這樣......

public class UiBrowserWindow : Microsoft.VisualStudio.TestTools.UITesting.BrowserWindow {
    public static UiBrowserWindow Convert(Microsoft.VisualStudio.TestTools.UITesting.BrowserWindow browserWindow) {
        UiBrowserWindow result = new UiBrowserWindow();
        result = (UiBrowserWindow)browserWindow;
        return result;
    }
}

UiBrowserWindow browserWindow = UiBrowserWindow.Convert(UIMap.Class1.GetType().BaseType);
//UIMap.Class1 is a property of UIMap

此代碼生成錯誤Argument type 'System.Type' is not assignable to parameter type 'Microsoft.VisualStudio.TestTools.UITesting.BrowserWindow'

更新的代碼:

public class UiBrowserWindow : Microsoft.VisualStudio.TestTools.UITesting.BrowserWindow {
    public static UiBrowserWindow convert(Microsoft.VisualStudio.TestTools.UITesting.BrowserWindow browserWindow) {
        UiBrowserWindow result = (UiBrowserWindow)browserWindow;
        return result;
    }
}

// Usage...
UiBrowserWindow browserWindow = UiBrowserWindow.convert(UIMap.Class1);

這導致異常InvalidCastException: Unable to cast object of type 'automatedTesting.Class1' to type 'UiBrowserWindow'

測試方法...

[TestMethod]
public void CodedUITestMethod1() {
    this.UIMap.RecordedMethod1();

    UiBrowserWindow browserWindow = UiBrowserWindow.convert(UIMap.Class1);
    Assert.IsNotNull(browserWindow.getUiTestControl<HtmlDiv>(new[] { 
        new PropertyExpression(HtmlDiv.PropertyNames.Id, "logo")
    }));
}

我想你應該省略“.GetType()。BaseType”部分並調用:

UiBrowserWindow browserWindow = UiBrowserWindow.Convert(UIMap.Class1);

更新:Class1派生自BrowserWindow,UiBrowserWindow派生自BrowserWindow。 Class1不是UiBrowserWindow。 您嘗試的轉換僅適用於重載轉換操作符(但我不推薦它)。 解釋你想要實現的目標,因為這種方式不起作用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM