我想从
获取基类public class Class1 : BrowserWindow
我想通过Class1
中的方法将UiBrowserWindow
“转换”为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")
}));
}
答案 0 :(得分:2)
我想你应该省略“.GetType()。BaseType”部分并致电:
UiBrowserWindow browserWindow = UiBrowserWindow.Convert(UIMap.Class1);
更新: Class1派生自BrowserWindow,UiBrowserWindow派生自BrowserWindow。 Class1不是UiBrowserWindow。您尝试的转换仅适用于重载转换操作符(但我不推荐它)。解释你想要实现的目标,因为这种方式不起作用