Ich habe eine Klasse erstellt konvertiert specflow Parameter benutzerdefinierte KlasseImplizite Operator String Eingabeparameter für benutzerdefinierte Klasse mit specflow
public class KeyphraseState
{
private Dictionary<string, bool> Keyphrase = new Dictionary<string, bool>()
{
{ "displayed", true },
{ "not displayed", false }
};
private string Phrase;
private bool State;
public KeyphraseState(string text)
{
this.Phrase = text;
this.State = GetState(this.Phrase);
}
private bool GetState(string phrase)
{
return Keyphrase[phrase];
}
public static implicit operator KeyphraseState(string text)
{
return new KeyphraseState(text);
}
}
Dann versuche ich, es zu benutzen in Schritt Definitionen wie
zu konvertieren[When(@"link is (.*) on the page")]
public void WhenLinkIs(string status)
{
KeyphraseState st = status;
// ...
}
und es funktioniert super. Aber wenn ich versuche, es zu benutzen in Schritt Bauer
[When(@"link is (.*) on the page")]
public void WhenLinkIs(KeyphraseState status)
{
// ...
}
dann habe ich eine Fehlermeldung Ungültige Umwandlung von ‚System.String‘ auf ‚KeyphraseState‘
Kann jemand erklären, wenn es möglich ist, zu verwenden impliziter Operator in diesem Fall oder andere Möglichkeiten, eine solche Konvertierung zu implementieren?
Andreas, vielen Dank für Ihre Antwort. Ich werde Transformationen versuchen und hier einen Kommentar hinzufügen, wenn es mir gelingt. – Egor
Ich sehe, dies wurde abgelehnt, aber ohne Grund, warum ... – Danny
Yep. Ich weiß nicht warum und wer hat es getan – Egor