Строковый объект с фиксированной длиной C #

У меня есть класс, в котором я хочу использовать строки с фиксированным размером. Причина фиксированного размера заключается в том, что класс «сериализуется» в текстовый файл со значениями фиксированной длины. Я хочу не писать в foreach значение аргумента guard и вместо этого иметь класс, обрабатывающий это.

Итак, у меня около 30 объектов, которые выглядят так

    public String CompanyNumber
    {
        get 
        {
            return m_CompanyNumber.PadLeft(5, ' ');
        }
        set 
        {
            if (value.Length > 5) 
            {
                throw new StringToLongException("The CompanyNumber may only have 5 characters", "CompanyNumber");
            }
            m_CompanyNumber = value; 
        }
    } 

Я хотел бы иметь строку, которая обрабатывает это сама. В настоящее время у меня есть следующее:

public class FixedString
{
    String m_FixedString;

    public FixedString(String value)
    {
        if (value.Length > 5) 
        {
            throw new StringToLongException("The FixedString value may consist of 5 characters", "value");
        }
        m_FixedString= value;
    }

    public static implicit operator FixedString(String value)
    {
        FixedString fsv = new FixedString(value);
        return fsv;
    }

    public override string ToString()
    {
         return m_FixedString.PadLeft(5,' ');
    }
}

Проблема с этим решением заключается в том, что я не могу установить длину строки в «время компиляции».

Было бы идеально, если бы в конце концов это выглядело бы примерно так

public FixedString<5> CompanyNumber { get; set; }

Ответы на вопрос(5)

Ваш ответ на вопрос