|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jul 2008
Messaggi: 1426
|
[C#]Override di un metodo
Salve a tutti, dovrei eseguire l'override di un metodo della dll si Watin.
Il codice della dll che ci interessa è questo: Codice:
namespace WatiN.Core
{
public class FireFox : Browser
{
private static string GetExecutablePath()
{
string path;
var mozillaKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Mozilla\Mozilla Firefox");
if (mozillaKey != null)
{
path = GetExecutablePathUsingRegistry(mozillaKey);
}
else
{
// We try and guess common locations where FireFox might be installed
var tempPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles), @"Mozilla FireFox\FireFox.exe");
if (File.Exists(tempPath))
{
path = tempPath;
}
else
{
tempPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles) + " (x86)", @"Mozilla FireFox\FireFox.exe");
if (File.Exists(tempPath))
{
path = tempPath;
}
else
{
throw new FireFoxException("Unable to determine the current version of FireFox tried looking in the registry and the common locations on disk, please make sure you have installed FireFox and Jssh correctly");
}
}
}
return path;
}
}
Codice:
public class MyWatiN : WatiN.Core.FireFox
{
public override string GetExecutablePath()
{
string path = @"Firefox Portable\App\firefox\firefox.exe";
return path;
}
}
'NomeProgetto.MyWatiN.GetExecutablePath()': impossibile trovare un metodo adeguato per eseguire l'override Cosa sbaglio? |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quand'è che ti decidi a studiare un pò le basi?
GetExecutablePath è statica e privata. 2 buone ragioni per non poterne fare l'override. |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Quote:
Il metodo originale e' statico, e per i metodi statici non e' previsto override. Il secondo errore e' che il metodo originale non e' virtual (non potrebbe comunque esserlo, essendo static). Solo dei metodi virtual (or abstract) si puo' effettuare override. Se pensi di poter fare in modo che i metodi interni alla classe Firefox eseguano una tua versione di GetExecutablePath() invece che quella in dotazione, mi spiace dirti che non potrai. Se invece ti serve che i tuoi metodi interni alla tua classe MyWatiN eseguano una tua versione di GetExecutablePath() allora potrai.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jul 2008
Messaggi: 1426
|
Uffaa! Mannaggi per di più non riesco neppure a modificare i sorgenti originali della libreria WatiN perchè in fase di compilazione mi dice che manca un file .snk.
Forse perchè, suppongo a causa del fatto che uso la versione express, mi viene detto che le cartelle soluzione non sono disponibili in questa versione del programma e quindi una versione mi viene presentata come non disponibile. Però questo file anche cercandolo non esiste proprio. |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Il file snk serve per firmare gli assembly, lo puoi tranquillamente rigenerare tramite le proprietà del progetto.
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jul 2008
Messaggi: 1426
|
Appena avrò tempo proverò! Grazie!
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:04.




















