Je voudrais obtenir la classe de base deObtenez classe de base héritant de la classe
public class Class1 : BrowserWindow
Je suis en train de « convertir » Class1
en UiBrowserWindow
par une méthode UiBrowserWindow
. Quelque chose comme ça ...
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
Ce code produit l'erreur Argument type 'System.Type' is not assignable to parameter type 'Microsoft.VisualStudio.TestTools.UITesting.BrowserWindow'
CODE MISE À JOUR:
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);
Cela provoque une exception 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")
}));
}
Ne pas utiliser de réflexion. Voir la réponse de Novakov: Un objet de type 'Class1' est toujours" assignable à "le type' BrowserWindow'. C'est ce que l'héritage (classes de base) est tout. Aussi: Dans votre méthode 'Convertir ', n'attribuez pas' result' à un 'new UiBrowserWindow' que vous n'allez pas utiliser quand même. Supprimez simplement cette expression 'new'. –