Новый тип на основе строки
От: sergii.p  
Дата: 26.01.23 15:46
Оценка:
хочется создать новый тип на основе строки, чтобы были запрещены операции сравнения, присваивания к строке.
Есть какое-то общепринятое решение? Типа best practice.
У меня что-то много boilerplate кода получается
public struct LanguageCode
{
    public LanguageCode(string v)
    {
       value = v;
    }

    private readonly string value;
    public override bool Equals(object obj)
        => obj is LanguageCode lc
            ? lc.value.Equals(value, System.StringComparison.CurrentCultureIgnoreCase)
            : false;
    public static bool operator ==(LanguageCode fst, LanguageCode snd)
        => fst.value.Equals(snd.value, System.StringComparison.CurrentCultureIgnoreCase);
    public static bool operator !=(LanguageCode fst, LanguageCode snd)
        => !fst.value.Equals(snd.value, System.StringComparison.CurrentCultureIgnoreCase);
    public override int GetHashCode()
        => value.ToLower().GetHashCode();
    public static LanguageCode Default
        => new LanguageCode("en");
    public override string ToString()
        => value.ToLower();
}

Для одиночного такого типа нормально. Но если хочу завести таких ещё парочку? Copy-Paste?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.