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