Статический абстрактный член интерфейса в C#
Модификатор static abstract в интерфейсе обязывает каждый реализующий тип
дать свою версию члена. Так задают метод, который относится к самому типу, а не к объекту.
Вызов Box.From("x") создаёт объект и записывает в Size длину строки. Условие where T : IBox<T> связывает этот метод с тем же типом, который реализует интерфейс:
Console.WriteLine(Box.From("x").Size); // выведет 1
interface IBox<T> where T : IBox<T>
{
int Size { get; }
static abstract T From(string raw);
}
record Box(int Size) : IBox<Box>
{
public static Box From(string raw) => new(raw.Length);
}
Опишите общий способ создать объект у двух типов: один читает число из строки "40", другой хранит текст "red". Выведите по одному полю каждого результата.
Получите два значения разными типами из строки "box" и выведите оба в одной строке.