efinieren impliziter und expliziter Umwandlungen für C # -Schnittstell
Gibt es eine Möglichkeit, schnittstellenbasierten Code in C # zu schreiben (d. H. Statt Klassen Schnittstellen als akzeptierte und weitergegebene Typen zu verwenden), ohne auf implizite Umwandlungen verzichten zu müssen? Hier ist ein Beispielcode - es wurde viel entfernt, aber dies sind die relevanten Teile.
public class Game
{
public class VariantInfo
{
public string Language { get; set; }
public string Variant { get; set; }
}
}
Und in ScrDictionary.cs haben wir ...
public class ScrDictionary: IScrDictionary
{
public string Language { get; set; }
public string Variant { get; set; }
public static implicit operator Game.VariantInfo(ScrDictionary s)
{
return new Game.VariantInfo{Language=sd.Language, Variant=sd.Variant};
}
}
Und die Schnittstelle ...
public interface IScrDictionary
{
string Language { get; set; }
string Variant { get; set; }
}
Ich möchte @ verwenden könnIScrDictionary
Anstatt vonScrDictionary
, kann aber trotzdem implizit ein @ konvertierScrDictionary
zu einerGame.VariantInfo
. Auch wenn es einen einfachen Weg gibt, diese Arbeit zu machen, indem man @ giIScrDictionary
eine Eigenschaft vom TypGame.VariantInfo
meine Frage ist allgemeiner: Gibt es eine Möglichkeit, Casts oder Operatorüberladungen auf Schnittstellen zu definieren? (Wenn nicht, wie kann diese Funktionalität in C # aufrechterhalten werden, ohne auf ein schnittstellenorientiertes Design zu verzichten?)