Определение неявных и явных приведений для интерфейсов C #
Есть ли способ написания кода на основе интерфейса (то есть использование интерфейсов, а не классов в качестве типов, принятых и передаваемых) в C #, не отказываясь от использования таких вещей, как неявное приведение? Вот пример кода - там было много удалено, но это соответствующие части.
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
мой вопрос более общий:Есть ли способ определения приведений или перегрузки операторов на интерфейсах? (Если нет, как правильно C # поддерживать эту функциональность, не отказываясь от интерфейсно-ориентированного дизайна?)