獲取基類,我想從繼承
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的...
[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")
}));
}
請勿使用反射。查看Novakov的答案:「Class1」類型的對象總是「可分配給」BrowserWindow類型。這就是繼承(基類)的全部內容。另外:在你的'Convert'方法中,不要將'result'賦給一個你不打算使用的'new UiBrowserWindow'。只需刪除那個「新」表達式。 –