Definición de conversiones implícitas y explícitas para interfaces C #

¿Hay alguna manera de escribir código basado en interfaz (es decir, usar interfaces en lugar de clases como los tipos aceptados y transmitidos) en C # sin renunciar al uso de cosas como conversiones implícitas? Aquí hay un código de muestra: se ha eliminado mucho, pero estas son las partes relevantes.

 public class Game
 {
     public class VariantInfo
     {
         public string Language { get; set; }
         public string Variant { get; set; }
     }
 }

Y en ScrDictionary.cs, tenemos ...

 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};
     }
 }

Y la interfaz ...

 public interface IScrDictionary
 {
     string Language { get; set; }
     string Variant { get; set; }
 }

Quiero poder usarIScrDictionary en lugar deScrDictionary, pero aún así ser capaz de convertir implícitamente unScrDictionary a unGame.VariantInfo. Además, si bien puede haber una manera fácil de hacer que esto funcione dandoIScrDictionary una propiedad de tipoGame.VariantInfo mi pregunta es más general:¿Hay alguna manera de definir conversiones o sobrecarga del operador en las interfaces? (Si no, ¿cuál es la forma correcta de C # de mantener esta funcionalidad sin renunciar al diseño orientado a la interfaz?)

Respuestas a la pregunta(2)

Su respuesta a la pregunta