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?)

Antworten auf die Frage(4)

Ihre Antwort auf die Frage