Есть ли способ написать интерфейс на основе интерфейса (т. Е. Использовать интерфейсы, а не классы, как типы, принятые и переданные) на 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# поддерживать эту функциональность, не отказываясь от интерфейса-ориентированного дизайна?)
Hasbro не всегда играл хорошо, когда люди использовали имя Scrabble ... –