Есть ли способ написать интерфейс на основе кода (т.е. использовать интерфейсы, а не классы, как типы, принятые и переданные) на С#, не отказываясь от использования таких вещей, как неявные приведения? Здесь некоторый пример кода - там было много удаленных, но это соответствующие части.
public class Game
{
public class VariantInfo
{
public string Language { get; set; }
public string Variant { get; set; }
}
}
И в ScrDictionary.cs мы имеем...
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};
}
}
И интерфейс...
public interface IScrDictionary
{
string Language { get; set; }
string Variant { get; set; }
}
Я хочу использовать IScrDictionary
вместо ScrDictionary
, но все же иметь возможность неявно преобразовывать ScrDictionary
в Game.VariantInfo
. Кроме того, хотя может быть простой способ сделать эту работу, предоставив IScrDictionary
свойство типа Game.VariantInfo
, мой вопрос в целом: Есть ли способ определить трансляции или перегрузку операторов на интерфейсах? (Если нет, то каков правильный способ С# поддерживать эту функциональность, не отказываясь от интерфейса-ориентированного дизайна?)